java - XPath:查找具有两个条件的节点

标签 java xml xpath

我得到了这个 XML:

<iet:aw-data>
  <iet:metadata filter=""/>
  <iet:message-resource>
    <iet:message>תוכניות אחרות שאינן פדראליים</iet:message>
    <iet:customer id="1"/>
    <iet:code>edi.claimfilingindicator.11</iet:code>
    <iet:locale>iw_IL</iet:locale>
  </iet:message-resource>
  <iet:message-resource>
    <iet:message>ספק מועדף הארגון (PPO)</iet:message>
    <iet:customer id="1"/>
    <iet:code>edi.claimfilingindicator.12</iet:code>
    <iet:locale>iw_IL</iet:locale>
  </iet:message-resource>
  .
  .
  .
</iet:aw-data>

我想构建一个表达式来获取具有 codemessage 的所有节点,其中每个节点都包含给定的参数。

到目前为止我所做的是这个表达式:

String exp = "//*[local-name()='message-resource']//*[local-name()='code'][contains(text(), 'edi')]"

现在我想添加 message 字段作为此表达式的另一个条件,我需要这方面的帮助。

最佳答案

您可以使用子路径作为谓词。假设您要选择消息资源的代码,其中消息包含“某些消息子字符串”:

//*[local-name()='message-resource' and ./*[local-name()='message' and contains(text(), 'some message substring')]]//*[local-name()='code'][contains(text(), 'edi')]

关于java - XPath:查找具有两个条件的节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52085972/

相关文章:

ruby - 用于选择带有可选中间纯空白文本节点的前一个元素的 XPath

xslt - 在 XSLT 2.0 中调用错误函数

java - spring 存储 prod 返回值

java - 在泛型类中使用类的子类型

java - 如何打印两列循环

java - JxBrowser更新浏览器

xml - 使用属性值在 XML Transform 中调用 ColdFusion 函数

xml - 如何从 Unix 命令行中删除 XML 标签?

xml - XSLT 在同一级别的其他标签内移动项目

java - 安卓工作室 : Text cursor disappears/gone after open some other class or pasting text in different classes