c# - 从后代获取 xml 元素列表

标签 c# xml linq-to-xml

这是我的 Xml 文件:

<?xml version="1.0" encoding="utf-8" ?>
<dati>
  <product id="456">
    <item>a</item>
    <item>b</item>
    <item>c</item>
  </product>
  <product id="789">
    <item>a</item>
    <item>b</item>
  </product>
  <product id="533">
    <item>a</item>
  </product>
</dati>

下面的代码只返回第一个 item.InnerText 元素

List<string> lst = new List<string>();
XDocument Doc = XDocument.Load("test.xml");

var q = from c in Doc.Descendants("product")
        where c.Attribute("id").Value == "789"
        select c.Element("item");

foreach (string name in q)
       lst.Add(name);

listBox1.DataSource = lst;

如何收集所选产品的所有项目?

最佳答案

当然:

var list = Doc.Descendants("product")
              .Single(c => c.Attribute("id").Value == "789")
              .Elements("item")
              .Select(item => (string) item)
              .ToList();

请注意,这采用了一种略有不同的方法 - 它检查是否存在完全匹配的产品元素(通过找到它),然后选择它下面的 item 元素,将每个元素投影到它的值。然后它以一种更简洁的方式将这些字符串转换成一个列表:)

关于c# - 从后代获取 xml 元素列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10552454/

相关文章:

javascript - JQuery 1.4.4 和数据表 1.7 不工作

java - XMLStreamReader 类中 getEventType() 方法的用途是什么

c# - 读取和处理 XML 文件

c# - 在 C# 中保持已编辑 XML 文件的缩进

c# - 通过字符串名称设置/获取类属性

c# - JSON post 在 IE 中有效,在 FF 中无效

c# - 当我渲染局部 View 时,我的模型为空

java - &lt;![CDATA ["' "]]> 返回两个结果。某些应用程序版本打印 "' ",另一个应用程序版本打印 '.为什么?

c# - 使用 where 子句从父节点中删除子 XML 节点

c# - 在 .Net 4.0 中取消任务延迟