2012-03-15 110 views
0

我想獲取特定id serviceOfferingID的serviceOfferingActiveFlag的值。示例XML如下。如何用xpath檢索數組元素

困擾我的一點是serviceOfferingID memeber在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 

爲 'serviceOfferingActiveFlag',其中 'serviceOfferingID' 等於1

我已經使用了完整的XPath導航上面會讓你相應的價值元素。您可以在需要的地方使用'//'來減少xpath長度。但請注意,使用'//'會降低查詢的性能。您可以根據您的要求在xpath中定製一些過濾器。

+0

下面的表達式工作正常「// struct [member [name ='serviceOfferingID'and value/* ='2']]/member [name ='serviceOfferingActiveFlag']/value/*」 – ImranRazaKhan 2012-03-15 13:19:28