<div>
<pre>
<span class="attr">id:</span>
<span class="text">1</span>
<span class="attr">time:</span>
<span class="text">42</span>
<span class="attr">length:</span>
<span class="text">74</span>
<span class="attr">id:</span>
<span class="text">2</span>
<span class="attr">time:</span>
<span class="text">57</span>
<span class="attr">length:</span>
<span class="text">74</span>
</pre>
</div>
这是我正在使用的一些HTML的模型。我试图使用XPATH来查找与id:1相关联的时间量,并且只有id:1,而不是id:2。
//span[@class = 'attr'][text()='id:']/following-sibling::span[1][text()='1']
正确地获得了&#39; 1&#39;我的身份的元素,但我尝试做
//span[@class = 'attr'][text()='id:']/following-sibling::span[1][text()='1']/following-sibling::span[1][text()='time:']/following-sibling::span[1]
为了在id:1之后的时间之后获取数字,对我来说不起作用。我需要xpath只识别某个id之后的时间,所以在time元素之后使用单个跟随id对我来说不起作用,因为它还需要找到id。甚至可以连续两次/三次做兄弟姐妹吗?有一个更好的方法吗?
答案 0 :(得分:1)
是的,您可以多次使用following-sibling::
轴。
您的XPath按预期工作。考虑到HTML的布局,除了可能使用spans
而不是子text()
节点的字符串值之外,通过缩短XPath可以做的事情并不多:
//span[@class='attr'][.='id:']/following-sibling::span[1][.='1']
/following-sibling::span[1][.='time:']
/following-sibling::span[1]