【发布时间】:2015-02-23 12:10:45
【问题描述】:
使用下面的示例,我无法运行以下 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.*')]]。 -
感谢 Lingamurthy CS 的关注,这也对我有用,但在在线 xPath 测试器中,我认为问题取决于我程序中使用的包 java xpath!
-
非常感谢@MartinHonnen,问题确实出在这个问题上。 match() 的第一个参数在我的第二个表达式中提供了更多节点。我试过你的建议,效果很好。非常感谢
-
@abaraa23000,我已将我的评论放入您应该能够接受以正确解决此问题的答案中。