【问题标题】:Xpath select by class and any other sub class [duplicate]Xpath按类和任何其他子类选择[重复]
【发布时间】:2018-09-28 02:48:18
【问题描述】:

是否可以选择具有如下类值的元素:

<div class="a b"></div>
<div class="a c"></div>
<div class="a d"></div>
<div class="a e"></div>
<div class="a f"></div>

我需要选择类属性值为a的所有div元素...

我尝试过这样的事情:

$items = $xpath->query('//div[@class="a *"]');

我尝试不使用*,但它也没有返回任何内容。

通过类属性值选择这些元素的正确 XPath 是什么?

【问题讨论】:

  • 是错字吗? class"a b"该类属性格式错误,或者只是在您的问题中编辑错误

标签: php xpath


【解决方案1】:

用前导和尾随空格填充类属性并查找“a”:

//div[contains(concat(' ',@class,' '), ' a ')]

这样它将匹配“a”值是否在类属性值中的任何位置,并且不会匹配诸如class="baz"之类的误报

【讨论】:

  • 这个变体在其他一些情况下应该会有所帮助,我也是...... tks too man.
  • 这是正确答案,+1(或查看duplicate link 了解更多变化和讨论)。
【解决方案2】:

正如kjhughes 所指出的,这是一个糟糕的答案,因为它匹配所有内部有'a' 的东西。

如果您想查找具有包含class 属性且包含"a" 的任何div,可以尝试xpath 查询//div[contains(@class, "a")]

【讨论】:

  • 你赢了,完美...prrrrrrrrrrrrrrr,完美的胜利!非常感谢!
  • 尽管 OP 很高兴,但这是一个糟糕的答案 (-1),因为它也会匹配 class="bad"。测试@class属性值是否包含某个值的正确方法见Mads Hansen's answerduplicate link
猜你喜欢
  • 2011-05-07
  • 1970-01-01
  • 2020-05-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-06-26
相关资源
最近更新 更多