Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在两个XML列表上循环_Java_Xml_Groovy - Fatal编程技术网

Java 在两个XML列表上循环

Java 在两个XML列表上循环,java,xml,groovy,Java,Xml,Groovy,我有一个如下的回复,包含两个列表。第一个列表是文件集,第二个列表是文件集。我想循环并返回第二个列表 文件列表。我试图用下面的代码来实现这一点,但它只返回第一个列表文件集。如何在groovy或java循环中返回第二个列表 XML响应 <FILE_SET_LIST> <FILE_SET> <FILE_LIST> <FILE> <DATETIME>2013-06-

我有一个如下的回复,包含两个列表。第一个列表是文件集,第二个列表是文件集。我想循环并返回第二个列表 文件列表。我试图用下面的代码来实现这一点,但它只返回第一个列表文件集。如何在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>

节点名称中缺少下划线,并且没有文件类。您可以从每个文件元素收集映射:


这里有一个例子:@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'