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

时间:2015-02-23 12:10:46

标签: java regex xpath nodes

通过下面的示例,我无法运行以下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>
&#13;
&#13;
&#13;

1 个答案:

答案 0 :(得分:1)

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

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

表达式//Test[matches(Name1/text(),".*text.*")]应该适用于您的样本,因为只有一个Name1子项。