如果XPath X包含字符串Z,则为XPath Y.

时间:2013-06-30 00:46:53

标签: xpath

如果某些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

1 个答案:

答案 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-then-else使用XPath 1.0:

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])