0

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

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

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

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

谢谢你的帮助。

4

2 回答 2

1

And 和 Or是布尔表达式:

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

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

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

//p | //ul

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

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

id('thisistheid')

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

//div[@id='thisistheid']

或者 - 如果您使用DOM API,您可以使用getElementById().

您可以在http://schlitt.info/opensource/blog/0704_xpath.html找到一个易于遵循的 XPath 教程

于 2013-11-03T14:20:33.563 回答
1

正如我的评论中提到的,我认为你需要使用//p and //ul,但我不确定。

不过,我当然可以回答您的第二个问题://div[@id='thisistheid']//ulul当 s 是#thisistheid. 您也可以使用/ul代替//ul来仅允许一级深度(如果您有嵌套列表,则很有用)

于 2013-11-03T14:21:02.143 回答