在这个 xml 中,我想匹配包含“match”的元素(random2 元素)
<root>
<random1>
<random2>match</random2>
<random3>nomatch</random3>
</random1>
</root>
好的,到目前为止我有:
//[re:test(.,'match','i')] (with re in the proper namespace)
这将返回 random2、random1 和 root ...我只想得到“random2”
有任何想法吗?
您要查找包含“匹配”或等于“匹配”的元素吗?
这将找到具有等于“匹配”的文本节点的元素(由于 random2
中的前导和尾随空格,不匹配任何元素):
//*[text()='match']
这将在删除前导和尾随空格(匹配 random2
)之后找到所有文本节点等于“匹配”的元素:
//*[normalize-space(text())='match']
这将找到文本节点值中包含“匹配”的所有元素(匹配 random2
和 random3
):
//*[contains(text(),'match')]
此 XPATH 2.0 解决方案使用 matches()
函数和正则表达式模式,该模式查找包含“匹配”并从字符串开头(即 ^
)或单词边界(即\W
)并以字符串结尾(即$
)或单词边界终止。第三个参数 i
评估不区分大小写的正则表达式模式。 (匹配 random2
)
//*[matches(text(),'(^|\W)match($|\W)','i')]
尝试
//re:*[. ='match']
不定期副业成功案例分享
//*/text()[normalize-space(.)='match']/parent::*
应该是//*[normalize-space(text())='match']
或//*[normalize-space(./text())='match']