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

Say*_*tak 1 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>
Run Code Online (Sandbox Code Playgroud)

我想获得 Cricket News 的所有标题。就像我的输出应该是:India WinsEngland lost

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

但我想做到像类似的事情//*[contains(cat,"Cricket")]/title,所以该类别的两个冠军CricketCricket News会来。但它没有输出。

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

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

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

Jef*_*ado 5

正如错误所说,的第一个参数contains()不能有多个项目。您需要将您的 xpath 重写为这样的:

//item[cat[contains(.,'Cricket')]]/title/text()
Run Code Online (Sandbox Code Playgroud)