我有一个 XML 文件,我想将三个不同节点之一解析到我的 C# 程序中。这三种不同的 XPath 中只有一种对任何 XML 文件有效,并且每一种都尽可能具体。下面是一个示例 XPath:
/ns:root/ns:foo/ns:bar[@barattr='{0}']/ns:foobar{1}/ns:{2} |
/ns:root/ns:foo/ns:bar[@barattr='{0}']/ns:{2} |
/ns:root/ns:foo/ns:bar[@barattr='{0}' and @{2}]
请注意,它们中有格式化程序,因为在代码中我使用 String.Format 动态生成这些查询。
那么,我的问题是,如果第一个 XPath 返回一个节点,SelectSingleNode 会做什么(即存在 ns:root/ns:foo/ns:bar[@barattr='{0}']/ns:foobar{1}/ ns:{2})? 它仍然会查询所有三个 XPath 并只返回第一个,还是会知道在那个时候停止?如果它仍然查询所有三个,C# 或 XPath 中是否有任何方法表示一旦找到匹配项就停止?
谢谢您的帮助!