使用C#评估非基于节点的Xpath表达式(count())

时间:2011-12-09 14:25:59

标签: c#-4.0 xpath

我需要找到一种方法来评估C#.net中的计数Xpath表达式。目前我正在遍历XML文档,最终我在一个特定的节点上。我需要弄清楚我在那个节点上。节点由具有值的属性区分。

    <A>
     <B>
      <C> 
       <D attr="10"/>
      </C>
      <C> 
       <D attr="10"/>
      </C>
      <C> 
       <D attr="11"/>
      </C>
      <C> 
       <D attr="10"/><!--Imagine I am here...  This would be the 3rd D attr that equals 10-->
      </C>
      <C> 
       <D attr="12"/>
      </C>
     </B>
    </A>

让我说我在第二个 我目前打开了一个XMLDocument。我选择了一个节点列表......我担心如果我打开一个XpathDocument,我将失去我在xmlNode列表中的位置。我想我可以通过使用xpath获取attr值,然后使用XpathDocument并以这种方式评估该表达式。我希望可能有一种更简单的方法。

感谢。

1 个答案:

答案 0 :(得分:1)

使用

(int) (theDocument.CreateNavigator()
        .Evaluate("count(/A/B/C[D/@attr = 10][3]/preceding-sibling::C) +1"))

在提供的XML文档上,结果为:

4