【发布时间】:2016-09-26 13:24:54
【问题描述】:
我有以下 XML 并想解析以获取值
<member>
<name>accumulatorInformation</name>
<value>
<array>
<data>
<value>
<struct>
<member>
<name>accumulatorEndDate</name>
<value>
<dateTime.iso8601>20161004T12:00:00+0000</dateTime.iso8601>
</value>
</member>
<member>
<name>accumulatorID</name>
<value>
<i4>1</i4>
</value>
</member>
<member>
<name>accumulatorStartDate</name>
<value>
<dateTime.iso8601>20160904T12:00:00+0000</dateTime.iso8601>
</value>
</member>
<member>
<name>accumulatorValue</name>
<value>
<i4>0</i4>
</value>
</member>
</struct>
</value>
<value>
<struct>
<member>
<name>accumulatorEndDate</name>
<value>
<dateTime.iso8601>20161017T12:00:00+0000</dateTime.iso8601>
</value>
</member>
<member>
<name>accumulatorID</name>
<value>
<i4>2</i4>
</value>
</member>
<member>
<name>accumulatorStartDate</name>
<value>
<dateTime.iso8601>20160917T12:00:00+0000</dateTime.iso8601>
</value>
</member>
<member>
<name>accumulatorValue</name>
<value>
<i4>0</i4>
</value>
</member>
</struct>
</value>
</data>
</array>
</value>
</member>
我试图解析并且只想要 accumulatorID 和 accumulatorValue。
以下是我在 SOAPUI 中作为常规步骤的代码
def responseHolder = groovyUtils.getXmlHolder("Get#Response")
for( struct in responseHolder.getNodeValues( "//member[name='accumulatorInformation']/value/array/data/value/struct/*" ))
log.info "struct : [$struct]"
log.info "accumulatorID : " + struct.getNodeValues( "//member[name='accumulatorID']/value/descendant::*" )
它显示如下输出,第二行显示错误
Mon Sep 26 16:54:01 GST 2016:INFO:struct : [ ]
Mon Sep 26 16:54:01 GST 2016:INFO:struct : [ ]
Mon Sep 26 16:54:01 GST 2016:INFO:struct : [ ]
【问题讨论】:
-
这两个元素都是重复的,而不是简单的值。每个元素的预期值是多少?
-
accumulatorID = 1 accumulatorValue = 0 accumulatorID = 2 accumulatorValue = 0
-
感谢您提供详细信息。您能否提供可解析的 xml,同时它具有原始 xml 所需的所有详细信息?
标签: xpath groovy xml-parsing soapui