47

我有简单的 xpath

 /products/product[contains(categorie,'Kinderwagens')] 

它有效,但现在我如何过滤多个类别值

/products/product[contains(categorie,'Kinderwagens')]  +  
/products/product[contains(categorie,'Kinderwagens')] 
4

4 回答 4

77

这行得通吗?

/products/product[contains(categorie,'Kinderwagens') or contains(categorie,'Wonderwagens')]

这里有一个类似的问题

于 2012-08-28T05:10:44.917 回答
17

你真的想要包含()吗?很多时候,人们在应该使用“=”时使用 contains() 来测试节点是否包含值。不同之处在于,如果类别元素具有字符串值“Kinderwagens”,categorie = 'wagens'则为假但contains(categorie, 'wagens')为真。

如果您实际上打算使用 '=',那么在 XPath 2.0 中您可以编写[categorie = ('Kinderwagens', 'Wonderwagens')]. 如果您仍在使用 XPath 1.0,则需要使用“或”进行两次单独比较。

于 2012-08-28T08:30:27.597 回答
3

有很多方法:

  1. //*[contains(text(), 'Kinderwagens') or contains(text(), 'Kinderwagens')]
  2. //product[contains(text(), 'Kinderwagens') or contains(text(), 'Kinderwagens')]
  3. //products/product[contains(text(), 'Kinderwagens') or contains(text(), 'Kinderwagens')]
  4. //products/product[contains(categorie, 'Kinderwagens') or contains(categorie, 'Kinderwagens')]

注:| (按位或)运算符不要使用

于 2021-07-14T16:14:29.303 回答
-3

您可以传递多个文本,如下所示

//a[contains(text(),'JB-' | 'ABC')]
于 2019-03-08T06:19:12.377 回答