<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/