Как извлечь значение вложенного массива из XML в DataWeave и преобразовать в CSV

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

<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

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

Спасибо

2 ответа

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

Во-первых, я добавил в свою логику шаг, чтобы окружить данные элементом "строки", чтобы они выглядели так:

<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

Надеюсь, ниже логика работает. пожалуйста, проверь это.

      %dw 2.0
output application/java
---
payload.rows.*row map ($.file_data) reduce (($$ ++ "\n" ++ $))
Другие вопросы по тегам