加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

xml – XPath – 按属性命名空间查找元素

发布时间:2020-12-16 08:02:51 所属栏目:百科 来源:网络整理
导读:我试图使用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 widgetContent/widg
我试图使用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']"

然而:

>这不给我的元素,只是属性和
>其中元素包含来自该命名空间的多个属性,此XPath将返回每个属性的结果而不是每个元素

是否可以得到我想要的,或者我只需要收集属性并计算它们对应的唯一元素集合?

编辑:Dimitre Novatchev给了我以下答案。我没有意识到你可以在这样的谓词中嵌套谓词:

"//*[@*[namespace-uri()='http://foo.example.com']]"

具体来说,这表示“任何具有namespace-uri =’…’的属性的元素”

使用:
//*[namespace-uri()='yourNamespaceURI-here'
     or
      @*[namespace-uri()='yourNamespaceURI-here']
     ]

谓词两个条件与XPath或运算符结合使用。

因此,XPath表达式选择任一元素:

>属于指定的命名空间

要么

>具有属于指定命名空间的属性

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读