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.
在下面的示例中,我无法 运行 以下 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.