2017-06-13 4 views
-1

Ich habe das folgende XML von einer Datenbankabfrage und muss das Ergebnis an einen API-Aufruf senden. Aber ich möchte Daten in einem anderen Format umwandeln, wie mache ich das. Jede Hilfe wäre willkommen.Datentransformation WS02

Ergebnis aus Datenbank:

`<Data> 
     <User Name="XYZ"> 
     <DETAILS> 
      <COURSE>IS</COURSE> 
      <YEAR>2016</YEAR> 
      <SUBJECT>COMPUTER SCIENCE<SUBJECT>   
     </DETAILS> 
     </User> 
     <User Name="XYZ"> 
     <DETAILS> 
      <COURSE>IS</COURSE> 
      <YEAR>2015</YEAR> 
      <SUBJECT>INFO SCIENCE<SUBJECT>   
     </DETAILS> 
     </User> 
    </Data> ` 

Wie ich Trans müssen: <Data>
<User Name="XYZ"> <DETAILS> <COURSE>IS</COURSE> <YEAR>2016</YEAR> <SUBJECT>COMPUTER SCIENCE<SUBJECT> </DETAILS> <DETAILS> <COURSE>IS</COURSE> <YEAR>2015</YEAR> <SUBJECT>INFO SCIENCE<SUBJECT>
</DETAILS> </User> </Data>

+0

Zweite Probe ist nicht gültig xml – simar

+0

Bitte fügen Sie was Sie bisher versucht haben, wie Ihre xslt Transformation. Auf diese Weise wissen die Leute, was Sie bisher versucht haben und sie können Ihnen eine bessere Antwort geben. – ophychius

+0

Ich habe nicht versucht, xslt Transformation zu verwenden. Ich rate, ob ich das mit foreach loop oder iterate oder script mediators machen kann. –

Antwort

0

ForEach Mediator ist für die Umwandlung von Datensegmenten und ersetzt sie in der ursprünglichen Nutzlast. Iterate Mediator wird nicht für Transformationen als solche verwendet. Es wird zum Aufrufen von Backends und aggregierenden Antworten verwendet. Weitere Informationen finden Sie unter https://docs.wso2.com/display/ESB500/ForEach+Mediator.

Aus dem Beispiel, das Sie hier hinzugefügt haben, scheint es, als müssten Sie die Ergebnisse mit dem Benutzernamen zusammenführen. Daher können Sie nicht ForEach, Iterate Mediatoren verwenden. Sie können jedoch den Scriptmediator verwenden, aber es ist besser, den XSLT-Mediator zu verwenden, da es sich um eine direkte und einfache XML-Manipulation handelt.

+0

Danke XSLT Mediator hat den Job gemacht! –

+0

Großartig! Bitte akzeptiere die Antwort :) – maheeka

0

Ich nehme an, Sie eindeutige Benutzer mit dem Attribut in Nachricht. Wenn Benutzer mit Name = "XYZ" ist, dass das Dokument garantiert nicht jeder andere Benutzer mit Attributnamen enthalten! = "XYZ"

können Sie neben XSLT-Transformation verwenden

<xsl:output indent="yes" omit-xml-declaration="yes"/> 
<xsl:template match="node()|@*"> 
    <xsl:copy> 
     <xsl:apply-templates select="node()|@*" /> 
    </xsl:copy> 
</xsl:template> 

<xsl:template match="Data"> 
    <xsl:element name="{local-name(User[last()])}"> 
     <xsl:copy-of select="User/@*" /> 
     <xsl:copy-of select="User/*" /> 
    </xsl:element> 
</xsl:template> 

+0

Danke! Ich musste einige Änderungen vornehmen, um meine Daten unterzubringen .. und der xslt Mediator funktionierte gut! –

Verwandte Themen