如何在XPath中使用and运算符?

时间:2013-11-03 14:17:34

标签: html select xpath operator-keyword

我正在尝试选择网页上的ul标签和p标签内的所有文字。我发现很难同时选择两者。我可以单独选择每个没问题。这是我到目前为止所尝试的内容:

('//p and ul');
('//p::ul');

我也在尝试选择一个特定的列表。网页上有多个列表,但我只对其中一个感兴趣。如何选择页面上具有特定ID的所有列表,例如

<div id="thisistheid"
<ul....

感谢您的帮助。

2 个答案:

答案 0 :(得分:1)

And and Or是布尔表达式:

  

通过计算每个操作数并将其值转换为布尔值来评估An和表达式,就好像通过调用布尔函数一样。如果两个值都为真,则结果为true,否则为false。如果左操作数的计算结果为false,则不评估右操作数。

由于节点不能同时是P和UL,因此您的测试永远不会返回true。

尝试使用Union运算符(PathExpression):

//p | //ul

这将为您提供文档中的所有p和ul元素

要获取具有特定ID的节点,您可以使用id() function

id('thisistheid')

如果由于某种原因这不起作用,您仍然可以使用属性测试,例如

//div[@id='thisistheid']

或 - 如果您使用的是DOM API,则可以使用getElementById()

您可以在http://schlitt.info/opensource/blog/0704_xpath.html

找到易于理解的XPath教程

答案 1 :(得分:1)

正如我的评论所述,我认为您需要使用//p and //ul,但我不确定。

我当然可以回答你的第二个问题://div[@id='thisistheid']//ul只有在ul的后代时才会选择#thisistheid。您也可以使用/ul代替//ul仅允许一个深度级别(如果您有嵌套列表,则非常有用)