【问题标题】:Evaluating non Node-based Xpath expression(count()) using C#使用 C# 评估非基于节点的 Xpath 表达式(count())
【发布时间】:2011-12-09 23:34:42
【问题描述】:

我需要找到一种方法来评估 C# .net 中的 count 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 并以这种方式评估该表达式。我希望可能有更简单的方法。

谢谢。

【问题讨论】:

  • 您也应该分享相关的 C# 代码。回答您的问题会容易得多。

标签: c#-4.0 xpath


【解决方案1】:

使用

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

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

4

【讨论】:

  • 这就是我要找的。​​span>
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-02-19
相关资源
最近更新 更多