2017-03-05 40 views
0

我有一個要求兩個將兩個相似的xml響應組合成一個xml負載。在這裏,我將一個xml存儲到flowVar中,另一個存儲在payload中。我試着用XSLT,但沒有得到它。以下是示例XML響應。如何將2 xmls合併爲單個xml負載騾

響應1:

<root> 
<token>hhd</token> 
<type>xyz</type> 
<statement> 
    <id>1</id> 
    <name>sri</name> 
</statement> 
<statement> 
    <id>2</id> 
    <name>jay</name> 
</statement> 
<root> 

RESPONSE2:

<root> 
<token>hhd</token> 
<type>xyz</type> 
<statement> 
    <id>3</id> 
    <name>paul</name> 
</statement> 
<statement> 
    <id>4</id> 
    <name>nick</name> 
</statement> 
<root> 

在上述兩個類似的反應,我不得不第二次迴應聲明標籤添加到第1 XML response.Here所有標籤都在,除了兩個個XML相同語句標籤。我使用XSLT,無法做到這一點。

輸出:

<root> 
<token>hhd</token> 
<type>xyz</type> 
<statement> 
    <id>1</id> 
    <name>sri</name> 
</statement> 
<statement> 
    <id>2</id> 
    <name>jay</name> 
</statement> 
<statement> 
    <id>3</id> 
    <name>paul</name> 
</statement> 
<statement> 
    <id>4</id> 
    <name>nick</name> 
</statement> 
<root> 

是否有任何替代辦法做到這一點像dataweave。 謝謝。

回答

0

你可以做很多方面...例如,如果你使用Dataweave,可以解決使用以下dataweave腳本: -

在這裏,我已存儲的XML負載的人說XML2在流可變數據和來自有效載荷的其他xml。

<set-variable variableName="data" value="&lt;root&gt;&lt;token&gt;hhd&lt;/token&gt;&lt;type&gt;xyz&lt;/type&gt;&lt;statement&gt;&lt;id&gt;3&lt;/id&gt;&lt;name&gt;paul&lt;/name&gt;&lt;/statement&gt;&lt;statement&gt;&lt;id&gt;4&lt;/id&gt;&lt;name&gt;nick&lt;/name&gt;&lt;/statement&gt;&lt;/root&gt;" doc:name="Variable" mimeType="application/xml"/> 

    <dw:transform-message doc:name="Transform Message"> 
      <dw:set-payload><![CDATA[ 
      %dw 1.0 
      %output application/xml 
       --- 
      root : { 
      token:payload.root.token, 
      type:payload.root.type, 
      (payload.root.*statement map { 
      statement : { 
       ($) 

       } 
      }), 

      (flowVars.data.root.*statement map { 
      statement : { 
      ($) 

      } 
     }) 

}]]></dw:set-payload> 
     </dw:transform-message> 

我得到以下組合輸出XML: -

<?xml version='1.0' encoding='windows-1252'?> 
<root> 
    <token>hhd</token> 
    <type>xyz</type> 
    <statement> 
     <id>1</id> 
     <name>sri</name> 
    </statement> 
    <statement> 
     <id>2</id> 
     <name>jay</name> 
    </statement> 
    <statement> 
     <id>3</id> 
     <name>paul</name> 
    </statement> 
    <statement> 
     <id>4</id> 
     <name>nick</name> 
    </statement> 
</root> 

注意只要確定,如果您發佈從郵遞員的有效載荷XML的一個,請確保您定義Content-Typeapplication/xml和還設置流量變量的mime-typeapplication/xml,您在其中存儲另一個xml
還要確保您的response1 xml和response2 xml都有效,因爲我可以發現您還沒有結束r OOT標籤

0

最簡單的方法是,如添加對象,如

<dw:transform-message doc:name="Transform Message" > 
      <dw:input-payload mimeType="application/xml"/> 
      <dw:set-payload><![CDATA[%dw 1.0 
%output application/xml 
--- 
root : payload.root ++ flowVars.data.root.*statement ]]></dw:set-payload> 
     </dw:transform-message> 

希望這有助於

0

要結合負載使用,「扁平化有效載荷」在變換消息。它將兩者結合並顯示爲單一有效載荷。