我正在尝试使用XPath函数contains()
,该函数有2个部分的字符串,但在评估时会抛出“无效的xpath表达式”错误。
这是我想要实现的目标:
正常工作xpath:
//*[contains(text(),'some_text')]
现在我想把它分成2部分,因为其间填充了一些随机文本:
//*[contains(text(),'some'+ +'text')]
我所做的是使用'+''+'来连接表达式中的字符串,就像我们在Java中一样。请建议我如何解决这个问题。
答案 0 :(得分:1)
您可以在一个谓词表达式中组合2 contains()
来检查文本节点是否包含2个特定子字符串:
//*[text()[contains(.,'some') and contains(.,'text')]]
<强> demo
强>
如果您需要更加具体,确保'text'
位于文本节点'some'
之后的某个位置,那么您可以使用substring-after()
和contains()
的组合作为如下所示:
//*[text()[contains(substring-after(.,'some'),'text')]]
<强> demo
强>
如果每个目标元素总是包含一个文本节点,或者如果在元素中找到多个文本节点时只需要考虑第一个文本节点,那么上面的XPath可以简化一下,如下所示:
//*[contains(substring-after(text(),'some'),'text')]