如何使用XDocument在一个节点中获取多个同名元素

本文关键字:获取 元素 节点 XDocument 何使用 一个 | 更新日期: 2023-09-27 18:18:47

我有一个这样结构的xml:

   <news>
      <id><![CDATA[1]]></id>
      <title><![CDATA[My title]]></title>
      <date><![CDATA[17-06-2013]]></date>
      <machine><![CDATA[a]]></machine>
      <machine><![CDATA[b]]></machine>
      <machine><![CDATA[c]]></machine>
      <machine><![CDATA[d]]></machine>
   </news>
   <news>
      <id><![CDATA[2]]></id>
      <title><![CDATA[My title 2]]></title>
      <date><![CDATA[17-06-2013]]></date>
      <machine><![CDATA[a]]></machine>
      <machine><![CDATA[b]]></machine>
      <machine><![CDATA[c]]></machine>
      <machine><![CDATA[d]]></machine>
   </news>

,我是这样读的:

var datas = from query in loadedData.Descendants("news")
                            select new News
                            {
                                Title = (string)query.Element("title"),
                                Id = (string)query.Element("id"),
                                StrDate = (string)query.Element("date"),
                                list = query.Elements("machine")
                            };

代码

list = query.Elements("machine")

是行不通的。如何获取标签为"machine"的元素列表

如何使用XDocument在一个节点中获取多个同名元素

下面提到的代码应该可以运行。我把list看作list

的对象
var datas = from query in loadedData.Descendants("news")
                                select new News
                                {
                                    Title = (string)query.Element("title"),
                                    Id = (string)query.Element("id"),
                                    StrDate = (string)query.Element("date"),
                                    list = (from xele in query.Descendants("machine")
                                           select xele.Value).ToList<string>();   
                                };