有这样的标记:
<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>而不是它的容器。