2016-06-17 15 views
0

私はこのようなXMLを持っている:GroovyのXML処理構文

<countries> 
    <country> 
      <country_id>10</country_id> 
      <providers> 
      <provider> 
       <id>1</id> 
       <name>Name</name> 
      </provider> 
      <provider> 
       <id>2</id> 
       <name>Name2</name> 
      </provider> 
     ... 
    </country> 
</countries> 

これは私が呼び出し、残り-保証でテストしていたサービスの応答です。プロバイダIDに基づいて、国IDを抽出する必要があります。上記の場合、id = 1の場合はcountry_code = 10が必要です(id = 2、country_code = 10の場合も同じです)。

私は、安心してgroovy構文を使ってXML文書を走査するのを見ましたが、groovyの経験がないので、私は立ち往生しています。

path.getList("countries.country.findAll{country -> country.providers.provider.id == '1' }.country_id", Integer.class); 

は、IDが1のプロバイダがアクティブである国のIDを返すために、これは動作しません:

私は(ハードコードされたIDを持つ)は、このような何かをしようとしていました。

いくつかのヒントを教えていただけますか?

答えて

1

複数の国が一致することができれば、のような何かをする方が安全だろう。そうでなければ

countries.country.findAll { country -> 
    country.providers.provider.any{ it.id == '1' } 
}*.country_id 

、それは単に次のようになります。

countries.country.find { it.providers.provider.any{ it.id == '1' }}.country_id 
+0

これは素晴らしいです、ありがとうございました! – TamasGyorfi

+0

喜んで:) – kunal