XPath运算符:某些子元素包含子字符串

时间:2017-01-27 00:44:37

标签: xml xpath

我有一个类似的XML文件:

<?xml version="1.0" encoding="UTF-8"?>
<root> 
  <channel> 
    <item> 
      <title>India Wins</title>  
      <cat>Cricket News</cat>  
      <cat>India</cat> 
    </item>  
    <item> 
      <title>Barcelona Wins</title>  
      <cat>Barcelona</cat>  
      <cat>Celta Vigo</cat>  
      <cat>Football</cat> 
    </item>  
    <item> 
      <title>England lost</title>  
      <cat>Cricket</cat>  
      <cat>T20</cat>  
      <cat>England</cat> 
    </item> 
  </channel> 
</root>

我想获得板球新闻的所有头衔。 我的输出应该是:India WinsEngland lost

所以我正在运行像//*[cat="Cricket"]/title这样的Xpath查询 它给出了结果:England lost,这对我来说是可以理解的。

但我想做//*[contains(cat,"Cricket")]/title类似的事情,以便类别CricketCricket News的标题都会出现。但它没有给出任何结果。

此外,我在许多在线Xpath测试人员中运行了Xpath查询,他们给出了类似的错误消息

  

错误 - 第一个不允许包含多个项目的序列   contains()的参数

谁能告诉我如何解决这个问题?

1 个答案:

答案 0 :(得分:4)

如错误所示,contains()的第一个参数不得包含多个项目。您需要将xpath重写为以下内容:

//item[cat[contains(.,'Cricket')]]/title/text()