属性值中的XPath通配符

时间:2011-12-23 19:24:26

标签: c# xpath html-agility-pack

我有以下XPath来匹配类span的属性:

//span[@class='amount']

我希望匹配class属性为“amount”的所有元素,但也可以包含其他类。我以为我能做到这一点:

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

但这不起作用......我怎么能这样做?

2 个答案:

答案 0 :(得分:34)

使用以下表达式:

//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元素,但不会选择最后一个元素。

答案 1 :(得分:15)

您需要使用contains方法。见How to use XPath contains() here?

//span[contains(@class,'amount')]