Java 在两个XML列表上循环
我有一个如下的回复,包含两个列表。第一个列表是文件集,第二个列表是文件集。我想循环并返回第二个列表 文件列表。我试图用下面的代码来实现这一点,但它只返回第一个列表文件集。如何在groovy或java循环中返回第二个列表 XML响应Java 在两个XML列表上循环,java,xml,groovy,Java,Xml,Groovy,我有一个如下的回复,包含两个列表。第一个列表是文件集,第二个列表是文件集。我想循环并返回第二个列表 文件列表。我试图用下面的代码来实现这一点,但它只返回第一个列表文件集。如何在groovy或java循环中返回第二个列表 XML响应 <FILE_SET_LIST> <FILE_SET> <FILE_LIST> <FILE> <DATETIME>2013-06-
<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>
节点名称中缺少下划线,并且没有文件类。您可以从每个文件元素收集映射:
这里有一个例子:@mesut,如果这个答案解决了你的问题,你应该接受它作为正确答案
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
}
}
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'