首页 > 解决方案 > 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>

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

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

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

现在我想将该message字段作为另一个条件添加到此表达式中,我需要帮助。

标签: javaxmlxpath

解决方案


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

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

推荐阅读