Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/260.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何解析包含节点列表的XML文件?_C#_Xml_Linq To Sql_Windows Runtime_Linq To Xml - Fatal编程技术网

C# 如何解析包含节点列表的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

如果我有一个简单的xml文件,比如

<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)