Gar*_*eth 20 xml xpath namespaces
我正在尝试使用XPath来查找在给定命名空间中具有元素的所有元素.
例如,在下面的文档中,我想找到foo:bar和doodah元素
<?xml version="1.0" encoding="UTF-8"?>
<root xmlns:foo="http://foo.example.com">
<foo:bar quux="value">Content</foo:bar>
<widget>Content</widget>
<doodah foo:quux="value">Content</doodah>
</root>
Run Code Online (Sandbox Code Playgroud)
我知道我可以使用以下XPath表达式来加载给定命名空间中的所有属性
"//@*[namespace-uri()='http://foo.example.com']"
Run Code Online (Sandbox Code Playgroud)
然而:
是否有可能获得我想要的东西,或者我只需要收集属性并计算它们对应的唯一元素集?
编辑:Dimitre Novatchev给了我以下答案.我没有意识到你可以在这样的谓词中嵌套谓词:
"//*[@*[namespace-uri()='http://foo.example.com']]"
Run Code Online (Sandbox Code Playgroud)
具体来说,这表示"任何具有任何属性的元素都具有namespace-uri ='...'"
Dim*_*hev 25
使用:
//*[namespace-uri()='yourNamespaceURI-here'
or
@*[namespace-uri()='yourNamespaceURI-here']
]
Run Code Online (Sandbox Code Playgroud)
谓词两个条件是使用XPath or
运算符进行的.
因此,XPath表达式选择以下任何元素:
要么
归档时间: |
|
查看次数: |
37797 次 |
最近记录: |