在xml中处理单个出现的节点的问题

时间:2013-09-17 11:54:33

标签: xml groovy soapui

我有一个XML文件。节点有时会有一个值,有时会有一个以上的值。我想在groovy中处理它,但我遇到了麻烦。请帮帮我

def fields_srv=[]

tokens = context.testCase.name.tokenize('-')
def serviceName = tokens[0]
def responseXMLName = serviceName +"#Response"
def holder = groovyUtils.getXmlHolder(responseXMLName)

for( node in holder['//fields'] ) 
    fields_srv.add(node) 

对于具有多个值的节点“字段”:

     <return>
        <billPageSize>10</billPageSize>
        <defaultBillStatementType>LAST_N_COUNT</defaultBillStatementType>
        <defaultLastN>10</defaultLastN>
        <fields>DOCUMENT_NUMBER</fields>
        <fields>CHEQUE_NUMBER</fields>
        <fields>DATE</fields>
        <fields>AGENTBRANCH</fields>
        <fields>NOTE</fields>
        <fields>CREDIT</fields>
        <fields>DEBIT</fields>
        <order>DESC</order>
     </return>

脚本没问题

但对于具有一个值的“字段”:

     <return>
        <billPageSize>10</billPageSize>
        <defaultBillStatementType>LAST_N_COUNT</defaultBillStatementType>
        <defaultLastN>10</defaultLastN>
        <fields>DOCUMENT_NUMBER</fields>
        <order>DESC</order>
     </return>

由于以下原因导致麻烦:

"fields_srv" : [D, O, C, U, M, E, N, T, _, N, U, M, B, E, R]

请帮帮我。

1 个答案:

答案 0 :(得分:1)

似乎持有人[&#39; //字段&#39;]返回元素值而不是带有一个元素的列表,当只有一个元素&#34;字段&#34;在你的xml中。所以这个字符串值被解析为循环中的字符列表。为此案例添加处理程序或使用以下内容:

...
def holder = groovyUtils.getXmlHolder(responseXMLName)

//will be a list, even if holder returns string value
def nodeList = []
nodeList.addAll(holder['//fields'])

for( node in nodeList) 
  fields_srv.add(node) 

此代码解决了问题