2016-07-19 8 views
0

Das ist mein resultset von DB

{result={name=Sanjay,address=india,phone=xxxxxxxxxx},  {name=Amit,address=india,phone=xxxxxxxxxx}} 

Ich möchte zu transformieren, wie unten-Format (XML-Format) mit Hilfe gedruckt werden von Transformations Nachricht in Maultier

<?xml version="1.0" encoding="UTF-8"?> 
<resultset> 
<lines> 
    <line1> 
    <name>Sanjay</name> 
    <address>india</address> 
    <phone>xxxxxxxxxx</phone> 
    </line1> 
    <line2> 
    <name>Amit</name> 
    <address>india</address> 
    <phone>xxxxxxxxxx</phone> 
    </line2> 
</lines> 
</resultset> 

Was ich getan habe in Nachricht verwandeln, ist wie:

{ 
resultset: { 
lines :{(payload.result map 
"line$$" :{ 
name:$.name, 
address:$.address, 
phone:$.phone 
} 

)} 
} 
} 

zu diesem t Umwandlung ich erhalte

<resultset> 
<lines> 
    <line0> 
    <name>Sanjay</name> 
    <address>india</address> 
    <phone>xxxxxxxxxx</phone> 
    </line0> 
    <line1> 
    <name>Amit</name> 
    <address>india</address> 
    <phone>xxxxxxxxxx</phone> 
    </line1> 
</lines> 

Wie man dieses Problem löst? Vielen Dank im Voraus

Antwort

0

Die folgende scheint zu funktionieren:

{ 
    resultset: { 
    lines :{(payload.result map using (label = "line" ++ ($$ + 1)) 
     (label) : { 
      name: $.name, 
      address: $.address, 
      phone: $.phone 
     } 
    )} 
    } 
} 

Ausgang:

<?xml version='1.0' encoding='UTF-8'?> 
<resultset> 
<lines> 
    <line1> 
    <name>Sanjay</name> 
    <address>india</address> 
    <phone>xxxxxxxxx</phone> 
    </line1> 
    <line2> 
    <name>Amit</name> 
    <address>india</address> 
    <phone>xxxxxxxxxx</phone> 
    </line2> 
</lines> 
</resultset> 
+0

Danke @cooper, funktioniert gut nw – Sanjay

0

Diese Alternative gibt auch das gleiche Ergebnis

%dw 1.0 
%output application/xml 
--- 
{ 
    resultset: { 
     lines : { 
      (payload.result map { 
       ("line" ++ ($$ + 1)) : { 
        name: $.name, 
        address: $.address, 
        phone: $.phone 
       } 
      }) 
     } 
    } 
} 

Wickeln Sie die Linienstruktur innerhalb der geschweifte Klammer map { ... }, und füllen Sie die Schlüssel direkt ("line" ++ ($$ + 1))