如何使用节点列表解析XML文件?

时间:2013-06-22 08:49:48

标签: c# xml linq-to-sql windows-runtime linq-to-xml

如果我有一个像

这样的简单xml文件
<person>
  <age>46</age>
  <name>Max</name>
</person>

我可以使用XDocument和LinqToSQL将数据读入我的结构:

var res = from item in xdoc.Descendants("person")
          select new Person
          {
              Age = item.Element("age").Value,
              Name = item.Element("name").Value,
          };

但现在我有一个以上的元素,例如

<person>
  <age>46</age>
  <name>Max</name>
  <phone>123</phone>
  <phone>456</phone>
</person>

我现在如何削减文档并将数据读入我的结构?因为现在我需要一个字符串列表,但是如何获取每个电话线并将其添加到我的列表中?

感谢。

1 个答案:

答案 0 :(得分:4)

你只是在寻找:

var res = from item in xdoc.Descendants("person")
          select new Person
          {
              Age = item.Element("age").Value,
              Name = item.Element("name").Value,
              Phones = item.Elements("phone").Select(x => x.Value).ToList()
          };

我会将Age设为整数(或者理想情况下将出生日期表示为DateTime,而不是......),并且可能使用显式转换而不是.Value属性:

var res = from item in xdoc.Descendants("person")
          select new Person
          {
              Age = (int) item.Element("age"),
              Name = (string) item.Element("name"),
              Phones = item.Elements("phone").Select(x => (string) x).ToList()
          };

所有这些都假定您的Person类具有Phones类型的可写IList<string>属性或类似内容。