2016-06-21 6 views
0

Ich verwende Dataweave, um eine CSV-Datei in eine XML-Datei umzuwandeln. An einigen Stellen gibt es keinen Wert für ein bestimmtes XML-Tag und ich bekomme ein leeres Tag.Dataweave Mulesoft XML-Tags überspringen

Was ich will ist, wenn es keinen Wert gibt als dieses Tag darf überhaupt nicht in Xml vorhanden sein.

Es ist ein langes Mapping, also möchte ich nicht das gesamte Mapping in das when sonst Tag schreiben, sondern nur das Mapping für dieses Tag in den Zustand wenn sonst.

Datenzuordnung

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

Ausgang: Wenn es in Eingabewert für Namen ist

<name>Kittu</name> 

Ansonsten

<name/> 

Was ich will, ist, dass in dem ansonsten Zustand, kein Tag sollte überhaupt kommen.

Alle Hilfe ist willkommen. Vielen Dank.

Antwort

0

„Name:“ sollte in Klammern sein, wie folgt aus:

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

Verwenden skipNullOn = „überall“ auf Ausgabe Erklärung, so dass Sie erklären müssen es nicht für alle Elemente.

%output application/xml skipNullOn="everywhere" 

Referenz: https://docs.mulesoft.com/mule-user-guide/v/3.7/dataweave-reference-documentation#output-directive

Wenn Sie die leeren Tags müssen vorhanden sein, dann werden wir verwenden müssen, wenn sonst wie unten dargestellt:

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

andere Art und Weise tun Spezifizieren "Standard" -Wert, der der einfachste ist:

0

Stimmen Sie mit Victor P überein, "name:" sh sollte innerhalb der Klammern sein. Um das gleiche Ergebnis zu erhalten, können Sie das folgende Snippet verwenden.

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

Obwohl ohne sonst es wird den Namen konstruieren, es sei denn, die payload01.name leer.

0

Verwenden Sie skipNullOn = "attributes" in der Ausgabedeklaration, sodass Sie sie nicht für alle Elemente deklarieren müssen.

% Ausgangs application/xml skipNullOn = "Attribute"

0

Hierzu sollten geeignetere leere Register in Maultier hinzufügen. name: payload.name default {}

Dies wird produzieren, wenn der Name keinen Wert haben.

0

skipNullOn prüft, ob Elemente oder Attribute vorhanden sind oder nicht. z.B. Wenn das Element name in Ihrer Eingabe nicht vorhanden ist, wird es in der Ausgabe nicht angezeigt.

Um zu überprüfen, wenn der Wert leer ist, werden Sie eine Bedingung wie folgt verwenden müssen: ! (Name: payload01.name), wenn payload01.name = "tag"

0

Wenn Sie skipNullOn verwenden = "überall" wird im Ausgabefeld sein, obwohl es keinen Wert hat. Also wird es in diesem Fall nicht funktionieren. Versuchen Sie, eine separate Funktion zum Überprüfen und Überspringen der Nullwerte mit dem gesamten Tag zu schreiben.