php简单的xpath问题

时间:2011-03-14 21:29:52

标签: php xpath

我有这个div:

<div class="product-name">Product1</div>

我也有这个div:

<div class="product-name gold">Product2</div>

如何更改此xpath查询以获取包含 product-name的div?而不是完全匹配。

/html/body//div[@class='product-name']

我用Google搜索了,但我找到的只是在搜索节点中的值而不是属性时如何使用contains

修改 enter image description here

3 个答案:

答案 0 :(得分:2)

对序列的这种存在性测试的经典XPath 1.0答案是:

/html/body//div[
   contains(
      concat(' ',normalize-space(@class),' '),
      ' product-name '
   )
]

答案 1 :(得分:1)

您可以使用contains()

/html/body//div[contains(@class, 'product-name')]

<强>更新

正如@Alejandro在他的评论中指出的那样,这也会匹配包含 product-name的任何类。 See his answer for a XPath 1.0 solution

如果您使用XPath 2.0,您也可以这样做:

/html/body//div[exists(index-of(tokenize(@class, "\s+"), "product-name"))]

答案 2 :(得分:0)

/html/body//div[contains(@class,'product-name')]

属性也是节点,它们被称为属性节点。