2014-03-06 49 views
-1

我如何使用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> 
+0

拉米,你嘗試過什麼到目前爲止? –

回答

1

假設人填寫個人目標是

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;