public static void Main()
string MyXml = @"<information>
XDocument XDocument = XDocument.Parse(MyXml);
var nodes = XDocument.Descendants("item");
Type type = typeof (Person);
object instance = Activator.CreateInstance(type);
foreach (var property in type.GetProperties())
if (nodes.Descendants("key").Any(x => x.Value == property.Name))
var node = nodes.First(x => x.Descendants("key").First().Value == property.Name);
property.SetValue(instance, Convert.ChangeType(node.Element("value").Value, property.PropertyType), null);
var tempPerson = (Person)instance;
Console.WriteLine(tempPerson.Name +" "+tempPerson.Age +" "+ tempPerson.Gender);