我的 XPath 有点生疏......假设我有这个简单的 XML 文件:
<?xml version="1.0" encoding="utf-8" ?>
<States xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<States>
<StateProvince name="ALABAMA" abbrev="AL" />
....
<StateProvince name="AMERICAN SAMOA" abbrev="AS" territory="true" />
</States>
</States>
我想运行一个简单的 XPath 查询来解析所有真实状态(所以不要拉入 territory = true 的状态)。我尝试了\StateProvince[@territory!='true'] 但我得到了零。其他变体似乎失败了。这看起来应该很简单,但没有找到我想要的。
感谢任何帮助。
最佳答案
一个选择所需元素的 XPath 表达式:
/*/States/StateProvince[not(@territory='true')]
请注意 必须尽可能避免使用 //
缩写,因为它会导致整个文档(以上下文节点)进行扫描。
上面的 XPath 表达式通过考虑结构避免了使用 //
abbreviation最初提供的 XML 文档。
只有当 XML 文档的结构完全未知(并且 XPath 表达式旨在用于许多结构未知的 XML 文档)时,才应该使用 //
缩写被考虑。
关于xml - 如何在没有特定属性的所有元素上使用 XPath 进行过滤,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/812090/