【发布时间】:2013-10-20 00:09:26
【问题描述】:
我正在使用 XPath 来提取 DOM 元素值。 由于 XPath 不一致,我使用了一些通配符来选择同一级别的所有 DOM 元素。
HTML 文档中的 XPath 示例:
//div[@id='floatswrap']/div/div[2]/div[1]
//div[@id='floatswrap']/div/div[2]/div[2]
//div[@id='floatswrap']/div/div[2]/div[3]
......
//div[@id='floatswrap']/div/div[2]/div[100]
我尝试了*/div[@id='floatswrap']/div/div[2]/div 通配符(注意开头的星号字符,结尾没有方括号),但它失败了。
所以我使用以下(上面的示例代码):
//div[@id='floatswrap']/div/div[2]/div[*](注意括号内的星号)现在可以了。
由于我是 XPath 新手,有没有更好、更一致的方法来使用通配符进行 XPath 节点选择?
编辑: 假设我有以下 HTML:
<html>
<head>
</head>
<body>
<div id="floatswrap">
<div>
<div>First</div>
<div> <!-- SELECT ALL DIV NODES WRAPPED IN THIS DIV -->
Second
<div>One</div> <!-- SELECT THIS NODE -->
<div>Two</div> <!-- SELECT THIS NODE -->
<div>Three</div> <!-- SELECT THIS NODE -->
<!-- ........ --> <!-- SELECT ALL DIV NODES -->
<div>Hundred</div> <!-- SELECT THIS NODE -->
</div> <!-- ./Second DIV -->
</div>
<div> Some Text </div>
<div> Some Other Text </div>
</div> <!-- ./floatswrap -->
</body>
</html>
我正在尝试选择第二个 DIV 中的所有 DIV。
【问题讨论】:
-
ID 是唯一的,所以使用
//div[@id=...]是合理的。如果没有任何示例输入,则无法对以下内容进行进一步评论。请至少发布整个 div,以及预期的输出。 -
我在这里想要完成的是遍历某个定义为 XPath 字符串的 DOM 节点下的 DOM 节点。
-
但是通过使用通配符。我可以使用其他环境或使用 CSS 选择器来完成此操作,但在 XPath 级别上执行此操作似乎要快得多,并且可以在运行时动态定义 if。
-
如果您对这个单一用例有任何疑问,请发表意见,以便有人回答。事实上,它无法真正得到回答,我们所能做的就是猜测你想要做什么。
-
@JensErat 我已经编辑了这个问题。请看上方