使用LINQ从xml </object>填充List <object>

时间:2011-10-21 07:39:43

标签: c# linq xaml

我是LINQ的新手。我需要使用xml中的信息填充以下类的List

class Person
{
    int id;
    string name;
    string address;
}

List<Person> people = new List<Person>();

在LINQ中执行此操作的正确方法是什么。

 <Company>
  ...
  ...<!--Lot of items -->
  ...
  <People>      <!--People appears only once -->
        <Instance>
            <ID>1</ID>
            <Name>NameA</Name>
            <Address>AddressA</Address>         
        </Instance>
        <Instance>
            <ID>2</ID>
            <Name>NameB</Name>
            <Address>AddressB</Address>         
        </Instance>
        ..
        ..
 </People>
</Company>

我需要知道LINQ表达式的结构才能直接到达<People>标签。此外,是否有填充List', i.e mapto实例`标记的快捷方式。

3 个答案:

答案 0 :(得分:7)

我希望您知道,您需要将您的字段(或更好地使其属性)设置为公共,以便能够填充对象值。您在班级字段中缺少公共修饰符。

var doc = XDocument.Parse(xmlString);
List<People> people = doc.Descendants("People")
                      .FirstOrDefault()
                      .Descendants("Instance")
                      .Select(p=> new Person()
                                  {
                                      ID = p.Element("ID").Value, 
                                      Name = p.Element("Name").Value, 
                                      Address=p.Element("Address").Value
                                   }).ToList();

答案 1 :(得分:2)

同意@Hasan Khan的答案,但您还需要在您的人员类中公开您的字段,以便您可以实例化它们。您可以使用自动属性,如下所示:

    class Person
    {
        public int Id { get; set; }
        public string Address { get; set; }
        public string Name { get; set; }
    }

答案 2 :(得分:0)

这里有一个关于如何使用Linq To XML

的教程