Мул сплиттер с помощью регулярных выражений не дал результатов
Я пытаюсь разбить CSV-файл на строки. Для этого я попытался альтернативно со следующими разделителями в моем потоке:
<splitter expression="#[regex('^')]" doc:name="Splitter"/>
<splitter expression="#[regex('\n')]" doc:name="Splitter"/>
<splitter expression="#[regex('.*')]" doc:name="Splitter"/>
Однако, хотя файл имеет много строк, я получаю следующее сообщение в журналах:
Splitter returned no results. If this is not expected, please check your split expression
2 ответа
Решение
Наконец, я нашел учебное пособие с решением: http://www.dotnetfunda.com/articles/show/2070/using-mule-studio-to-read-csv-comma-seperated-value-data-from-fileinbo
Сплиттер должен быть настроен так:
<splitter expression="#[StringUtils.split(message.payload, '\n\r')]" doc:name="Splitter" />
И это требует, чтобы следующий элемент был включен в поток:
<configuration doc:name="Configuration">
<expression-language autoResolveVariables="true">
<import class="org.mule.util.StringUtils" />
</expression-language>
</configuration>
Это выражение работает для разделения файла CSV:-
<splitter expression="#[StringUtils.split(message.payload, '\n\r')]" doc:name="Splitter_For_MultipleRow"/>
И если ваши CSV-файлы имеют заголовки столбцов, такие как Имя, Возраст и т. Д., Вы можете использовать это:-
<splitter expression="#[rows=StringUtils.split(message.payload, '\n\r');ArrayUtils.subarray(rows,1,rows.size())]" doc:name="Splitter_For_MultipleRow"></splitter>