如何使用xpath检索数组元素

时间:2012-03-15 09:51:34

标签: java xpath xml-rpc

我想获得特定id serviceOfferingID的serviceOfferingActiveFlag的值。示例XML如下。

困扰我的一点是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>

此致

1 个答案:

答案 0 :(得分: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中定制一些过滤器。