XPath只返回包含文本的元素,而不返回其父项
在这个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和根…我想只得到“random2”
有任何想法吗?
你想find包含 “匹配”,或相等的 “匹配”的元素?
这将find具有等于“匹配”的文本节点的元素(因为random2
的前导和尾随空格,所以不匹配任何元素):
//*[text()='match']
这将find所有具有等于“匹配”的文本节点的元素,除去前导和尾随的空白(匹配random2
)之后:
//*/text()[normalize-space(.)='match']/parent::*
这将find文本节点值中包含“匹配”的所有元素(匹配random2
和random3
):
//*[contains(text(),'match')]
这个XPATH 2.0解决scheme使用matches()函数和一个正则expression式模式来查找包含“匹配”的文本节点,并从string开头(即^
)或字边界(即\W
)开始,string(即$
)或字边界。 第三个参数i
评估正则expression式模式不区分大小写。 (匹配random2
)
//*[matches(text(),'(^|\W)match($|\W)','i')]
尝试
//re:*[. ='match']