【发布时间】:2012-10-04 05:19:03
【问题描述】:
有这样的标记:
<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>
如果相邻的 span 属于 a1 类,我有兴趣获取所有 <a> 和 some text 仅。因此,在整个代码的末尾,我的结果应该是来自第一个 div 的 <a> 和来自第三个的 some text。如果 <a> 和 some text 在 span 或 div 中会很容易有 class 属性,但没有运气。
我现在正在做的是寻找 span 和 a1 类:
//div[contains(@class,'foo')]/div/span[contains(@class,'a1')]
然后我得到它的父级并以该父级作为上下文节点执行另一个query()。这看起来远非高效,所以问题显然是是否有更好的方法来实现我的目标?
答案附录
根据@MarcB accepted answer,正确的查询是:
//div[contains(@class,'foo')]/div/span[contains(@class,'a1')]/..
但对于<a>,使用它可能会更好:
//div[contains(@class,'foo')]/div/span[contains(@class,'a1')]/../a
获取<a> 而不是它的容器。
【问题讨论】: