我想选择一组元素作为节点(div[@class="Adres"]
的内容):
<div class="KolumnaStyl">
<div class="Nazwa">ABCD</div>
<div class="Adres">
12-345 Warszawa
<br/>
ul. Krasnobrodzka 5
<br/>
Mazowieckie
这可以通过以下方式完成:
//div[@class="KolumnaStyl"]/div[@class="Adres"]/node()
实际上,页面上有两个相同的div[@class="Adres"]
,这意味着node()
当前选择了它们的内容。但是,我不能打电话给//div[@class="KolumnaStyl"][1]
- 这不会选择第一次出现。
如果父目录多次存在,如何选择一组唯一的节点?
答案 0 :(得分:0)
如果您想要第一个匹配的,请执行:
(//div[@class="KolumnaStyl"]//div[@class="Adres"])[1]/node()
在 XPATH 中,首先表示1
,而不是0
。
以下是HTML示例:
<body>
<div class="foo">
<p> 12 </p>
</div>
<div class="foo">
<p> 112 </p>
</div>
</body>
XPATH
表达式:
(//div[@class = 'foo'])[1]
输出
<div class="foo">
<p>12</p>
</div>
答案 1 :(得分:0)
看看“XPath Get first element of subset”。
基本上,predicates have higher precedence比/
和//
运营商都要好。
因此,(//div[@class="KolumnaStyl"]//(div[@class="Adres"]))[1]
应该返回您想要的结果。
另请查看the spec以获取更多背景信息。