我需要一个可以找到<a>
标记或<option>
标记的XPath,每个标记都包含“内容”。
因此XPath可以匹配任何一个
<a attributes='value'>something</a>
或
<option attributes="value">something</option>
我试过了:
$x("//*[local-name()='a' contains(.,'something') or local-name()='option' contains(.,'something')]")
我也试过这个:
$x("//*[local-name(contains(.,'something'))='a' or local-name(contains(.,'something'))='option']")
但它们都不起作用。在第一个中,我可以排除contains()
并找到标签,但我需要能够搜索那些仅包含指定“某事”文本的标签。
答案 0 :(得分:4)
你真的应该发布你的输入XML。
我们就是这样说的:
<r>
<a>xxx something</a>
<a>yyy nothing</a>
<option>something xxx</option>
<option>nothing xxx</option>
</r>
(1)然后(如果您尝试忽略名称空间):
//*[(local-name() = 'a' or local-name() = 'option')][contains(., 'something')]
(2)或(如果没有名称空间)[信用:早期@alecxe帖子]:
//*[self::option or self::a][contains(., "something")]
(3)或(如果使用XPath 2.0,再次没有名称空间):
//(a|option)[contains(., 'something')]
将选择
<a>xxx something</a>
<option>something xxx</option>