2016-06-21 2 views
0

Я использую dataweave для преобразования CSV-файла в XML-файл. В некоторых местах нет значения для определенного тега xml, и я получаю пустой тег.Dataweave Mulesoft Пропустить XML-теги

Что я хочу, если нет значения, чем этот тег не должен присутствовать в xml вообще.

Это длинное картографирование, поэтому я не хочу писать все сопоставление в теге, в противном случае, но только для отображения этого тега в случае, когда в противном случае это условие.

отображение данных

name: ((payload01.name) when payload01.name != "" 
    otherwise {}), 

Выход: Если значение имени на входе

<name>Kittu</name> 

В противном случае

<name/> 

То, что я хочу, что в противном случае условие, нет тег должен появиться вообще.

Вся помощь приветствуется. Благодарю.

ответ

0

«Имя:» должно быть в скобках, например:

(name: (payload01.name) when payload01.name != "" 
     otherwise {}) 
0

Использование skipNullOn = «везде» на выходе декларации, так что вам не нужно объявлять его для всех элементов.

%output application/xml skipNullOn="everywhere" 

Ссылка: https://docs.mulesoft.com/mule-user-guide/v/3.7/dataweave-reference-documentation#output-directive

Если вам нужны пустые теги должны присутствовать, то мы будем использовать, когда в противном случае, как показано ниже:

name: payload01.name when ((payload01.name != null) and (payload01.name != "")) otherwise "", 

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

name: payload01.name default "", 
0

Согласен с Victor P, "name:" sh ould находиться внутри круглых скобок. Однако, чтобы получить тот же результат, вы можете использовать следующий фрагмент.

(name: payload01.name) when payload01.name != "" 

Хотя без иначе будет строить имя, если payload01.name не пуст.

0

Используйте skipNullOn = "атрибуты" в объявлении вывода, чтобы вам не нужно было объявлять его для всех элементов. Применение выходного

%/XML skipNullOn = "атрибуты"

0

Для добавления пустой вкладки в мул это должно более целесообразным. имя: payload.name default {}

это произведет , если имя не имеет значения.

0

skipNullOn проверяет наличие или отсутствие элементов или атрибутов. , например. Если в вашем элементе отсутствует элемент имени, он не отображает его на выходе.

Чтобы проверить, если значение пусто, то придется использовать условие вроде этого: ! (Имя: payload01.name), когда payload01.name = «»

0

Если вы используете skipNullOn = «везде» тег будет присутствовать в поле вывода, хотя оно не имеет значения. Так что в этом случае это не сработает. Попробуйте написать отдельную функцию для проверки и пропускания нулевых значений с помощью всего тега.

Смежные вопросы