如何使用LINQ填充XML



如何使用Linq使用以下XML

填充人对象
<Results> 
  <Person name="Edwin"> 
    <DOB>1990-10-01</DOB>
    <Department>Engineering</Department> 
  </Person> 
  <Person name="Joe">
    <DOB>1979-10-01</DOB> 
    <Department>Engineering</Department> 
  </Person>
  <Person name="Eric"> 
    <DOB>1989-10-01</DOB>
    <Department>Sales</Department> 
  </Person>
</Results>

假设人是

public class Person
{
    public string Name { get; set; }
    public DateTime DateOfBirth { get; set; }
    public string Department { get; set; }
}

解析:

var xdoc = XDocument.Load(path_to_xml);
var people = from p in xdoc.Root.Elements("Person")
             select new Person {
                 Name = (string)p.Attribute("name"),
                 DateOfBirth = (DateTime)p.Element("DOB"),
                 Department = (string)p.Element("Department")
             };

您也可以使用XML避难所。添加序列化属性:

public class Results
{        
    [XmlElement("Person")]
    public List<Person> People { get; set; }
}
public class Person
{
    [XmlAttribute("name")]
    public string Name { get; set; }
    [XmlElement("DOB")]
    public DateTime DateOfBirth { get; set; }
    public string Department { get; set; }
}

和避免结果:

XmlSerializer serializer = new XmlSerializer(typeof(Results));
var results = (Results)serializer.Deserialize(File.OpenRead(path_to_xml));
var people = results.People;

最新更新