2012-03-15 12 views
0

特定のid serviceOfferingIDのserviceOfferingActiveFlagの値を取得したいと思います。サンプルXMLは以下のとおりです。xpathで配列要素を取り出す方法

私を悩ます点は、serviceOfferingIDメンバーがserviceOfferingActiveFlagの後に来ることです。

どのように私は特定のserviceOfferingIDの価値を得るのですか?

<methodResponse> 
<params> 
<param> 
<value> 
<struct> 
<member> 
<name>responseCode</name> 
<value><i4>0</i4></value> 
</member> 
<member> 
<name>serviceOfferings</name> 
<value> 
<array> 
<data> 
<value> 
<struct> 
<member> 
<name>serviceOfferingActiveFlag</name> 
<value><boolean>0</boolean></value> 
</member> 
<member> 
<name>serviceOfferingID</name> 
<value><i4>1</i4></value> 
</member> 
</struct> 
</value> 
<value> 
<struct> 
<member> 
<name>serviceOfferingActiveFlag</name> 
<value><boolean>0</boolean></value> 
</member> 
<member> 
<name>serviceOfferingID</name> 
<value><i4>2</i4></value> 
</member> 
</struct> 
</value> 
<value> 
<struct> 
<member> 
<name>serviceOfferingActiveFlag</name> 
<value><boolean>0</boolean></value> 
</member> 
<member> 
<name>serviceOfferingID</name> 
<value><i4>3</i4></value> 
</member> 
</struct> 
</value> 
<value> 
<struct> 
<member> 
<name>serviceOfferingActiveFlag</name> 
<value><boolean>0</boolean></value> 
</member> 
<member> 
<name>serviceOfferingID</name> 
<value><i4>4</i4></value> 
</member> 
</struct> 
</value> 
</data> 
</array> 
</value> 
</member> 
</struct> 
</value> 
</param> 
</params> 
</methodResponse> 

よろしく、

答えて

0
$methodResponse/params/param/value/struct/member[name eq 'serviceOfferings']/value 
/array/data/value/struct[member[name eq 'serviceOfferingID']/value/i4 eq '1'] 
/member[name eq 'serviceOfferingActiveFlag']/value 

上記は、あなたが 'serviceOfferingIDは、' 私は移動するには、完全なXPathを使用していた1

に等しい 'serviceOfferingActiveFlag' の値の要素を対応になるだろう。あなたはxpathの長さを減らすために必要なところでいつでも '//'を使うことができます。ただし、 '//'を使用するとクエリのパフォーマンスが低下することに注意してください。必要に応じてxpath内のいくつかのフィルターを調整することができます。

+0

次の式は正常に動作しています。//メンバー[name = 'serviceOfferingActiveFlag']/value/* "/" [member [name = 'serviceOfferingID'とvalue/* = '2']] – ImranRazaKhan

関連する問題