如果我有一个像
这样的简单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>
我现在如何削减文档并将数据读入我的结构?因为现在我需要一个字符串列表,但是如何获取每个电话线并将其添加到我的列表中?
感谢。
答案 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>
属性或类似内容。