我有一个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]
请帮帮我。
答案 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)
此代码解决了问题