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

标签 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>

最佳答案

据我所知,表达式 //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/

相关文章:

java - 从 Java 插入到 SQL Server 时,我可以获得类似 "BULK INSERT"的速度吗?

java - JPA:从另一个表加载值列表

java - 无法将 MP3 文件移动到其他文件夹

php - 使用正则表达式 PHP 按空格和连字符拆分句子

python - 获取 DOM 树中元素的 XPath?

python - (不是这样)子节点到列表的高级 xsl 转换

java - 澄清对 "Dependency Inversion"的理解

Javascript 正则表达式仅匹配括号内

xml - 如何选择除特定元素之外的特定元素的所有兄弟元素

regex - Elasticsearch 正则表达式不起作用