Как найти элемент, не зная, насколько глубоко он вложен, используя Linq to XML? - PullRequest
1 голос
/ 11 ноября 2011

У меня есть 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, чтобы найти корень категории.Как сделать так, что без предка сколько на самом деле предков может быть включено?

1 Ответ

4 голосов
/ 11 ноября 2011

Вы должны использовать свойство Descendants.

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