我正在尝试选择网页上的ul标签和p标签内的所有文字。我发现很难同时选择两者。我可以单独选择每个没问题。这是我到目前为止所尝试的内容:
('//p and ul');
('//p::ul');
我也在尝试选择一个特定的列表。网页上有多个列表,但我只对其中一个感兴趣。如何选择页面上具有特定ID的所有列表,例如
<div id="thisistheid"
<ul....
感谢您的帮助。
答案 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()
。
答案 1 :(得分:1)
正如我的评论所述,我认为您需要使用//p and //ul
,但我不确定。
我当然可以回答你的第二个问题://div[@id='thisistheid']//ul
只有在ul
的后代时才会选择#thisistheid
。您也可以使用/ul
代替//ul
仅允许一个深度级别(如果您有嵌套列表,则非常有用)