加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

xml – 有更好的方法获得XPath查询结果的父节点吗?

发布时间:2020-12-16 01:51:51 所属栏目:百科 来源:网络整理
导读:给定标记如下: div class="foo" divspan class="a1"/spana href="...".../a/div divspan class="a2"/spana href="...".../a/div divspan class="a1"/spansome text/div divspan class="a3"/spansome text/div/div 现在我有兴趣获得这些 a和一些文本,如果相
给定标记如下:
<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>而不是其容器。

关于xpath查询的好处是,你可以基本上对待他们像一个文件系统路径,所以只是有
//div[contains(@class,'a1')]/..
                                                              ^^

将找到所有.a1节点下面的.foo节点,然后上移一级到a1节点的父节点。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读