XPath中的通配符在属性值中的应用

43

我有以下XPath用于匹配class为span的属性:

//span[@class='amount']

我想匹配所有具有"class"属性的元素,但它们也可能带有其他类。我认为可以这样做:


``` $(".amount") ```

然而,这只会选择那些具有"class"属性且值为"amount"的元素。


``` $(".amount[class]") ```

这可以选择所有具有"class"属性"amount"的元素,无论它们是否还有其他类名。

//span[@class='*amount*'] 

但是那样做不起作用...我该怎么办?

2个回答

48

请使用以下表达式:

//span[contains(concat(' ', @class, ' '), ' amount ')]
你可以单独使用contains,但这也将匹配类似someamount的类名。在以下输入上测试上述表达式:
<root>
  <span class="test amount blah"/>
  <span class="amount test"/>
  <span class="test amount"/>
  <span class="amount"/>
  <span class="someamount"/>
</root>

它将选择前四个span元素,但不包括最后一个元素。


如果我想获取 span 标签内的文本内容,应该怎么写代码呢?我已经将结果存储在 nodelist 中,并尝试使用 nodelist.item(0).getFirstChild().getNodeValue() 打印内容。但是这并没有返回任何结果。请帮帮我。 - TheGaME
有趣的是需要总共四个(2 x 2)空格。 - Dan Jacobson

26

9
很遗憾,这也会匹配 class="lookamountain"。@lwburk 给出了正确答案。 - Ross Patterson

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接