我想使用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>
我知道可以使用以下XPath表达式从给定的命名空间中加载所有属性:
"//@*[namespace-uri()='http://foo.example.com']"
然而:
- 这并没有给我元素,只是属性。
- 当元素包含多个来自该命名空间的属性时,此选择器会按属性而不是按元素返回结果。
我是否能够得到我想要的内容,或者我必须收集属性并计算它们对应的唯一元素集合?
//*[@*[namespace-uri()='http://foo.example.com']]
//@*[namespace-uri()='http://foo.example.com']