有这样的标记:
<div class="foo">
<div><span class="a1"></span><a href="...">...</a></div>
<div><span class="a2"></span><a href="...">...</a></div>
<div><span class="a1"></span>some text</div>
<div><span class="a3"></span>some text</div>
</div>
我有兴趣获得所有<a>
并且some text
只有在相邻span
是类的情况下a1
。所以在整个代码的最后,我的结果应该<a>
来自第一个div
和some text
第三个。如果<a>
并且some text
在内部span
或div
将具有class
属性会很容易,但没有运气。
我现在正在做的是寻找span
类a1
:
//div[contains(@class,'foo')]/div/span[contains(@class,'a1')]
query()
然后我得到它的父级并以该父级作为上下文节点再做一次。这看起来远非高效,所以问题显然是是否有更好的方法来实现我的目标?
答案附录
根据@MarcB接受的答案,使用的正确查询是:
//div[contains(@class,'foo')]/div/span[contains(@class,'a1')]/..
但因为<a>
它可能更好地使用:
//div[contains(@class,'foo')]/div/span[contains(@class,'a1')]/../a
得到<a>
而不是它的容器。