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字段作为另一个条件添加到这个表达式中,我需要这方面的帮助。


九州编程
浏览 568回答 2
2回答

Smart猫小萌

您可以使用子路径作为谓词。假设您要选择包含“某些消息子字符串”code的消息资源message://*[local-name()='message-resource'&nbsp;and&nbsp;./*[local-name()='message'&nbsp;and&nbsp;contains(text(),&nbsp;'some&nbsp;message&nbsp;substring')]]//*[local-name()='code'][contains(text(),&nbsp;'edi')]

繁星点点滴滴

我的版本//*[local-name()='message-resource']/*[local-name()='code'&nbsp;and&nbsp;contains(text(),&nbsp;'edi')]/../*[local-name()='message'&nbsp;and&nbsp;contains(text(),&nbsp;'PPO')]/..只需将“PPO”替换为您在消息中搜索的内容。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java