Как извлечь значение вложенного массива из XML в DataWeave и преобразовать в CSV - PullRequest
0 голосов
/ 30 января 2019

Я получаю это значение из базы данных

<row>
 <file_data>One</file_data>
 <time_inserted>2019-01-30T10:29:20.543</time_inserted>
</row>
<row>
 <file_data>two</file_data>
 <time_inserted>2019-01-30T10:29:20.547</time_inserted>
</row>
<row>
 <file_data>three</file_data>
 <time_inserted>2019-01-30T10:29:20.550</time_inserted>
</row>
<row>
 <file_data>four</file_data>
 <time_inserted>2019-01-30T10:29:20.550</time_inserted>
</row>
<row>
 <file_data>five</file_data>
 <time_inserted>2019-01-30T10:29:20.553</time_inserted>
</row>

И я хотел бы вывести его в виде CSV, как это

one
two
three
four
five

Любая помощь приветствуется

Спасибо

1 Ответ

0 голосов
/ 30 января 2019

Мне удалось решить мою проблему следующим образом:

Сначала я добавил в свою логику шаг, чтобы окружить данные элементом «строки», чтобы они выглядели так:

<rows>
    <row>
        <file_data>One</file_data>
        <time_inserted>2019-01-30T12:34:00.277</time_inserted>
    </row>
    <row>
        <file_data>two</file_data>
        <time_inserted>2019-01-30T12:34:00.277</time_inserted>
    </row>
    <row>
        <file_data>three</file_data>
        <time_inserted>2019-01-30T12:34:00.280</time_inserted>
    </row>
    <row>
        <file_data>four</file_data>
        <time_inserted>2019-01-30T12:34:00.280</time_inserted>
    </row>
    <row>
        <file_data>five</file_data>
        <time_inserted>2019-01-30T12:34:00.283</time_inserted>
    </row>
</rows>  

Затем я написал этот код, чтобы получить вывод списка, который мне был нужен:

 def responses = new XmlSlurper().parseText(xmlData)
 def payload = ""

 responses.row.findAll { p ->
  p.file_data
 }
 .each { p ->
 payload = payload + "${p.file_data}" + "\r\n"
 }               

print payload

И это выдает:

 one
 two
 three
 four
 five
...