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

时间:2018-08-29 20:57:10

标签: 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字段添加为该表达式的另一个条件,我需要帮助。

2 个答案:

答案 0 :(得分:2)

您可以将子路径用作谓词。假设您要选择class SimpleGame { constructor() { this.game = new Phaser.Game(800, 600, Phaser.AUTO, 'content', { preload: this.preload, create: this.create }); } game: Phaser.Game; preload() { this.game.load.image('logo', 'phaser2.png'); } create() { var logo = this.game.add.sprite(this.game.world.centerX, this.game.world.centerY, 'logo'); logo.anchor.setTo(0.5, 0.5); } } window.onload = () => { var game = new SimpleGame(); }; 个消息资源,其中code包含“某些消息子字符串”:

message

答案 1 :(得分:0)

我的版本

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

只需将“ PPO”替换为您要在邮件中搜索的内容。