我有一个这样的节点:
<meta name="og:description" content="Here's the content" />
如果名称是“description”,我希望能够选择此元素,无论它是否在命名空间中。我需要能够选择元标记,如果它的名称是“og:description”,“description”,“blah:description”等。
我已经看到了xpath的资源,它展示了如何在命名空间中进行选择,但不管命名空间如何。
答案 0 :(得分:13)
使用强>:
//meta[@*[local-name() = 'description']]
这将选择XML文档中具有local-name meta
属性的所有"description"
元素。
根据定义,标准XPath函数 local-name()
会生成从中删除命名空间前缀(如果有)的节点的名称。
请注意:如果XML文档的结构是静态已知的,请始终避免使用//
伪运算符。通常使用//
会导致执行缓慢。
答案 1 :(得分:5)
使用XPath 2可以:
/meta[ends-with(@name, 'description')]
对于XPath 1,我们需要:
/meta['description' = substring(@name, string-length(@name) - string-length('description') + 1)]