c# - 如何在不知道使用 Linq to XML 嵌套多深的情况下查找元素?

标签 c# xml linq-to-xml

我有这样的 XML 文档:

<BrowseNodes>
<BrowseNode>
  <BrowseNodeId>4075981</BrowseNodeId>
  <Name>Nutrition Bars</Name>
  <Ancestors>
  <BrowseNode>
     <BrowseNodeId>4075971</BrowseNodeId>
     <Name>Nutrition Bars &amp; Drinks</Name>
        <Ancestors>
        <BrowseNode>
            <BrowseNodeId>3764441</BrowseNodeId>
            <Name>Diet &amp; Nutrition</Name>
            <Ancestors>
            <BrowseNode>
                <BrowseNodeId>3760931</BrowseNodeId>
                <Name>Products</Name>
                <IsCategoryRoot>1</IsCategoryRoot>
                <Ancestors>
                <BrowseNode>
                   <BrowseNodeId>3760901</BrowseNodeId>
                   <Name>Health &amp; Personal Care</Name>
                </BrowseNode>
                </Ancestors>
             </BrowseNode>
             </Ancestors>
          </BrowseNode>
          </Ancestors>
       </BrowseNode>
      </Ancestors>
 </BrowseNode>
</BrowseNodes>

我想通过 XLINQ 查询来查找类别根。没有多少祖先实际上可以包括在内怎么办?

最佳答案

您应该使用 Descendants 属性。

var node = 
  XElement.Parse(xmlString)
  .Descendants()
  .Where(xe => xe.Element("IsCategoryRoot") != null && xe.Element("IsCategoryRoot").Value == "1");

关于c# - 如何在不知道使用 Linq to XML 嵌套多深的情况下查找元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8087318/

相关文章:

c# - XmlTextReader 在不识别的情况下传递了 XML 文档的末尾

xml - xPath - sum(//*) 解释

Android:在编程布局中使用预定义的维度参数

c# - 如果 XElement 为 Null,如何防止添加 XML 元素?

c# - 在不同线程上更新 UI 的正确方法

c# - 解决 WCF 错误 : The EncryptedKey clause was not wrapped with the required encryption token 'System.IdentityModel.Tokens.X509SecurityToken'

c# - 如何将计算机音频传递给程序以进行可视化?

xml - XSLT 转换不适用于包含诸如 <tag1 :tag2> </tag1:tag2 > and some specific attributes 之类的组合标签的 XML 文件

c# - Null 处理的扩展方法不适用于 linq for xml

c# - 使用 linq to XML 向 XML 添加元素