如果某些XPath查询Y包含一些字符串Z?
,是否可以应用XPath查询X.HTML
<div class="pluto">
<ul>
<li>apples</li>
<li>oranges</li>
</ul>
Success
</div>
像XPath:
//div[@class='pluto']/text() IF contains(//div/ul/li[1], "apples")
输出
Success
答案 0 :(得分:2)
将条件带到表达式:
//div[@class='pluto'][contains(//div/ul/li[1], "apples")]/text()
只有符合该等级才会返回Sucess
。否则结果将为空。
在旁注中,您真正想要搜索的内容可以简化:
//div[@class='pluto'][contains(ul/li[1], "apples")]/text()
再一次,它只会在满足contains
条件时带来结果。
另一方面,在 XPath 2.0 中,如果您需要值,具体取决于您的条件而不是节点值本身,则可以使用 { {1}}表达:
if
如果找到匹配项,会带来if (//div[@class='pluto'][contains(ul/li[1], "apples")]/text()) then 'OK!' else 'NOT OK!'
部分(then
),如果找不到,则会'OK!'
部分else
。
如果我不想满足条件,我想执行另一个xPath查询怎么办(有点像else-if)?
您可以在('NOT OK!')
或then
部分中添加任何XPath表达式:
else
if (//div[@class='pluto'][contains(ul/li[1], "apples")]/text())
then
concat('OK! :',//div/ul/li[1])
else
concat('NOT OK! :',//div/ul/li[2])