c# - .NET 中的 XPath 选择节点

标签 c# xml xpath

<Document>
  <A> 
    <B> 
      <C></C>
    </B>
  </A>
  <E>
   <F>
    <C></C>
   </F>
   <G>
    <C></C>
  </G>
 </E>
</Document>

如果我将上述 XML 加载到 XmlDocument 中并使用 XPath 查询对 A 执行 SelectSingleNode//C

XmlNode oNode = oDocument.SelectSingleNode("E");
XmlNodeList oNodeList = oNode.SelectNodes("//C");

为什么它返回 B 下的节点,而我期望发生的是它只返回 E 下的节点

有道理吗?

编辑:我如何让它只从该节点开始返回?

最佳答案

简单地说:前导//表示在与所选节点相同的文档中的“任何级别”。

来自spec :

  • //para选择文档根的所有para后代,从而选择同一个文档中的所有para元素作为上下文节点
  • .//para选择上下文节点的para元素后代

关于c# - .NET 中的 XPath 选择节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/558870/

相关文章:

c# - 复选框列表 Asp.Net C#

c# - 为什么我得到 CS1012 : "Too many characters in character literal" and CS0019?

xml - 没有 XML 声明的 GPathResult 到 String

html - Capybara - 单击基于另一个值的链接

java - 使用 InputSource 时发现 FileNotFound

c# - 嵌套 groupby LINQ to treeview

javascript - DIVstyle=none,但div仍然显示(用于弹出处理图形)

java - 键盘即将到达 EditText 字段并因此将其隐藏。如何防止键盘隐藏EditText字段?

xml - 使用 XML/RCurl R 包解析 HTML 表,而不使用 readHTMLTable 函数

python - 如何从 python 中的 unicode 字符串中删除除数字和 ","之外的所有字符?