2017-06-13 65 views
-1

我有以下XML來自數據庫查詢並需要將結果發送到API調用。但我想用不同的格式轉換數據,我該怎麼做。 任何幫助,將不勝感激。從數據庫數據轉換WS02

結果:

`<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> ` 

我需要如何變換: <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

第二個示例無效xml – simar

+0

請添加您到目前爲止嘗試過的內容,如xslt轉換。這樣人們就知道你到目前爲止已經嘗試了什麼,他們可以給你一個更好的答案。 – ophychius

+0

我還沒有嘗試過使用xslt轉換。我猜測如果我可以做到這一點使用foreach循環或迭代或腳本調解員。 –

回答

0

ForEach mediator用於轉換數據段並將其替換爲原始有效內容。迭代中介本身不用於轉換。它用於調用後端和聚合響應。請參閱https://docs.wso2.com/display/ESB500/ForEach+Mediator瞭解更多詳情。

從您在此處添加的示例看起來好像需要通過用戶名合併結果。因此你不能使用ForEach,迭代中介。但是,您可以使用Script中介,但最好使用XSLT中介,因爲它是直接和簡單的XML操作。

+0

謝謝XSLT調解員完成了這項工作! –

+0

太棒了!請接受答案:) – maheeka

0

我假設你有在郵件屬性唯一的用戶。如果用戶與保證文件不包含任何屬性名其他用戶名=「XYZ」!=「XYZ」

您可以使用下一個XSLT轉換

<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

謝謝!我不得不做一些更改以適應我的數據..和xslt中介工作正常! –