在下面的示例中,我无法运行以下 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 。
关于java - xpath 匹配同名节点内容的函数表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28673523/