从后代获取 xml 元素的列表

本文关键字:列表 元素 xml 后代 获取 | 更新日期: 2023-09-27 18:33:57

这是我的 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>

下面的代码仅返回第一项。内部文本元素

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;

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

从后代获取 xml 元素的列表

当然:

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

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