我尝试使用XPath查找给定名称空间中具有元素的所有元素
例如,在下面的文档中,我想找到foo:bar和doodah元素:
<;?xml version=“1.0”encoding=“UTF-8”?>;
<;根xmlns:foo=”http://foo.example.com“>;
<;foo:bar qux=“value”>;内容</foo:bar>;
<;widget>;内容</widget>;
<;doodah foo:qux=“value”>;内容</杜达>;
</根>;
我知道我可以使用以下XPath表达式从给定命名空间加载所有属性:
“/@*[名称空间-uri()=”http://foo.example.com']"
然而:
- 这并没有给我元素,只是属性
- 如果元素包含来自该名称空间的多个属性,则此选择器将针对每个属性而不是每个元素返回结果
是否有可能得到我想要的,或者我必须收集属性并计算它们对应的唯一元素集
使用:
/*[namespace-uri()='yourNamespaceURI-here'
或
@*[namespace-uri()='yourNamespaceURI-here']
]
谓词的两个条件使用XPath或运算符进行or运算
因此,XPath表达式选择以下任一元素:
- 属于指定的命名空间
- 具有属于指定命名空间的属性