给定标记如下:
- <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>和一些文本,如果相邻span是a1类。所以在整个代码的结尾,我的结果是< a>从第一个div和一些文本从第三个。如果< a>和一些文本在span或div将有类属性,但没有运气。我想做的是用a1类查询span:
- //div[contains(@class,'foo')]/div/span[contains(@class,'a1')]
然后获取其父代并执行另一个query()作为上下文节点的父节点。有什么更好的方法吗?我使用PHP DOM如果这很重要。
ANSWER
根据@MarcB答案,正确的查询是:
- //div[contains(@class,'a1')]/..
但是对于< A>它可能更好使用:
- //div[contains(@class,'a1')]/../a
得到< A>而不是其容器。