【问题标题】:Xpath select nodes where parent has some attributeXpath 选择父节点具有某些属性的节点
【发布时间】:2013-11-30 05:18:56
【问题描述】:

我在使用 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>

我正在尝试:

.//div[@class!="block-events-head" and ../div[@data-category-sport='Basketball']]

但它不起作用:(

.//div[@class!="block-events-head"]

有效,但如何添加“按父级过滤”?

请帮我解决..

问候!

【问题讨论】:

    标签: html dom xpath


    【解决方案1】:

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

    .//div[@data-category-sport='Basketball']/div[@class!="block-events-head"]
    

    看看这是否适合你。

    【讨论】:

    • @theTech 领先我 7 秒... :-)
    • 我正在尝试 .//div[@data-category-sport='Basketball']/div[@class!="block-events-head"] 它不起作用:(但是。如果我写 .//div[@data-category-sport='Basketball']/div[@class="block-events-head"] 它可以给我所有元素 whree class="block-events-head" 和父有需要属性:(为什么?有可能因为项目还没有类属性吗?(例如
    • 解决了! .//div[@data-category-sport='Basketball']/*[@id!=""] =) 谢谢大家!
    【解决方案2】:

    我不确定这是否是您想要的,但看看这是否对您有所帮助:

    .//div[@data-category-sport="Basketball"]/div[@class!="block-events-head"]

    【讨论】:

      猜你喜欢
      相关资源
      最近更新 更多
      热门标签