C# 如何解析包含节点列表的XML文件?
如果我有一个简单的xml文件,比如C# 如何解析包含节点列表的XML文件?,c#,xml,linq-to-sql,windows-runtime,linq-to-xml,C#,Xml,Linq To Sql,Windows Runtime,Linq To Xml,如果我有一个简单的xml文件,比如 <person> <age>46</age> <name>Max</name> </person> 但是现在我有了不止一个元素,例如 <person> <age>46</age> <name>Max</name> <phone>123</phone> <phone>45
<person>
<age>46</age>
<name>Max</name>
</person>
但是现在我有了不止一个元素,例如
<person>
<age>46</age>
<name>Max</name>
<phone>123</phone>
<phone>456</phone>
</person>
46
马克斯
123
456
我现在如何裁剪文档并将数据读入我的结构?因为现在我需要一个字符串列表,但如何获取每条电话线并将其添加到列表中
谢谢。我想你只是在寻找:
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
类具有类型为IList
或类似内容的可写Phones
属性。我想您只是在寻找:
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
类具有类型为IList
或类似内容的可写Phones
属性。我没有看到任何关于LINQ to SQL的证据。。。就我所见,这只是LINQ到XML的转换。当你说“不止一个元素”的时候,你只是在说phone
元素,对吧?嗨!您是否有可用的XML文件的XSD或某种模式定义?KrI在那里没有看到任何LINQ to SQL的证据。。。就我所见,这只是LINQ到XML的转换。当你说“不止一个元素”的时候,你只是在说phone
元素,对吧?嗨!您是否有可用的XML文件的XSD或某种模式定义?谢谢。如果电话标签是这样的123。如何获取这两个信息并将其保存到我的类型电话?@ThomasSebastianJensen:那么您需要类似于。选择(x=>新电话((字符串)x.Attribute(“类型”),(字符串)x)
谢谢。如果电话标签是这样的123。如何获取这两个信息并将其保存到我的类型电话?@ThomasSebastianJensen:那么您需要类似于的内容。选择(x=>新电话((string)x.Attribute(“type”),(string)x)