Xpath 选择父节点具有某些属性的节点

Ale*_*kov 5 html xpath dom

我在使用 xpath 时遇到问题。我需要从类别中选择所有项目。类似于(伪语言):如果class != block-events-head且父属性data-category-sport="Basketball",则选择所有 div

这是 html 示例:

<div data-category-sport="Basketball" data-category-treeid="972911">
<div class="block-events-head">...</div>
<div id="event_1558960" data-event-treeid="1558960">...</div>
<div id="event_1559240" data-event-treeid="1559240">...</div>
<div id="event_1559560" data-event-treeid="1559560">...</div>
</div>
Run Code Online (Sandbox Code Playgroud)

我想:

.//div[@class!="block-events-head" and ../div[@data-category-sport='Basketball']]
Run Code Online (Sandbox Code Playgroud)

但它不起作用:(

.//div[@class!="block-events-head"]
Run Code Online (Sandbox Code Playgroud)

可行,但如何添加“按父级过滤器”?

请帮我解决一下..

问候!

Mar*_*ert 2

XPath 表达式的问题在于,第二项../div[@data-category-sport='Basketball']对于第一项适用的节点的所有兄弟节点也成立@class!="block-events-head"。您想要的是检查条件的两个部分是否具有相同的父子关系。这实际上很容易实现。只需将父级的检查移至层次结构的更高级别即可

.//div[@data-category-sport='Basketball']/div[@class!="block-events-head"]
Run Code Online (Sandbox Code Playgroud)

看看这是否适合你。