如何找到一个元素,不知道它嵌套有多深使用Linq到XML

本文关键字:嵌套 XML Linq 何找 元素 一个 不知道 | 更新日期: 2023-09-27 18:14:14

我有一个像这样的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查询找到目录根。如果什么都没有,那是怎么做到的到底有多少祖先?

如何找到一个元素,不知道它嵌套有多深使用Linq到XML

你应该使用Descendants属性。

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