xpath 匹配同名节点内容的函数表达式

xpath matches function expression for same name node content

在下面的示例中,我无法 运行 以下 XPath 表达式://Test[matches(Name1/text(),".*text.*")] 和 ExpressionExpection 成为触发器。至于表达式 //Test[matches(Name/text(),".*text.*")] 正常工作! 请解释为什么以及如何支付这个问题?因为我花了很多时间没有结果。 先感谢您。 我的例子:

<?xml version="1.0"?>
<Root>
  <Test txt="0001" >
    <Name1>text1</Name1>
    <Name2>text2</Name2>
    <Name3>text3</Name3>
  </Test>
  <Test txt="0002" >
    <Name>text4</Name>
    <Name>text5</Name>
    <Name>text6</Name>
  </Test>
 </Root>

据我所知,表达式 //Test[matches(Name/text(),".*text.*")] 可能会给您的输入样本带来错误,即不允许将多个项目的序列作为 matches 的第一个参数。

要避免该问题,只需使用 //Test[Name[matches(., '.*text.*')]]

表达式 //Test[matches(Name1/text(),".*text.*")] 应该适用于您的示例,因为只有一个 Name1 child.