-1

我有一个 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]

请帮我。

4

1 回答 1

1

当您的 xml 中只有一个元素“字段”时,holder['//fields'] 似乎返回元素值而不是带有一个元素的列表。所以这个字符串值被解析为循环中的字符列表。为这种情况添加处理程序或使用如下内容:

...
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) 

这段代码解决了问题

于 2013-09-17T19:21:20.710 回答