我的回复如下,其中包含两个列表。第一个列表是 FILE_SET ,第二个列表是 FILE_LIST 。我想循环并返回第二个列表 FILE_LIST 。我尝试使用下面的代码执行此操作,但它只返回第一个列表 FILE_SET 。我如何在groovy或java循环中返回第二个列表?
XML响应
<FILE_SET_LIST>
<FILE_SET>
<FILE_LIST>
<FILE>
<DATETIME>2013-06-07T00:00:00+02:00</DATETIME>
<FILE_ID>W123</FILE_ID>
<FILE_TYPE>Doc</FILE_TYPE>
</FILE>
<FILE>
<DATETIME>2013-06-07T00:00:00+02:00</DATETIME>
<FILE_ID>W125</FILE_ID>
<FILE_TYPE>Letter</FILE_TYPE>
</FILE>
</FILE_LIST>
</FILE_SET>
</FILE_SET_LIST>
我的代码
response.FILESETLIST?.FILESETS?.collect() {
it.FILELIST?.FILES?.collect() {
FILE file = new FILE()
file.FileId = it.FILEID
file.Date = it.CREATIONDATETIME
file.FileType = it.FILETYPE
file
}
}
答案 0 :(得分:0)
缺少节点中的下划线&#39;名称,没有FILE
类。您可以从每个FILE
元素中收集地图:
xml = '''<FILE_SET_LIST>
<FILE_SET>
<FILE_LIST>
<FILE>
<DATETIME>2013-06-07T00:00:00+02:00</DATETIME>
<FILE_ID>W123</FILE_ID>
<FILE_TYPE>Doc</FILE_TYPE>
</FILE>
<FILE>
<DATETIME>2013-06-07T00:00:00+02:00</DATETIME>
<FILE_ID>W125</FILE_ID>
<FILE_TYPE>Letter</FILE_TYPE>
</FILE>
</FILE_LIST>
</FILE_SET>
</FILE_SET_LIST>'''
response = new XmlSlurper().parseText xml
files = response.FILE_SET.FILE_LIST.FILE.collect { file ->
return [
fileType: file.FILE_TYPE,
fileId: file.FILE_ID,
dateTime: file.DATETIME
]
}
assert files.size() == 2
assert files[0].fileType == 'Doc'
assert files[1].fileId == 'W125'