2017-03-05 3 views
0

私は、2つの同様のxml応答を1つのxmlペイロードに結合するという要件を持っています。ここでは、私はflowVarに1つのXMLを格納し、他はペイロードに格納します。私はXSLTを試してみましたが、それを入手できませんでした。以下は、xmlレスポンスのサンプルです。2xmlsをmuleの単一のxmlペイロードにマージする方法

Response1:

<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:上記の2回の同様の反応で

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

、私はすべてのタグを除いて、両方のXMLSで同じである第一のxml response.Hereに第二応答文のタグを追加する必要が

ステートメントタグ。私は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ペイロードの1保存されているが、フローにXML2を言います可変データ、およびペイロードからの他のxml。私は結合された出力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> 

、あなたがapplication/xmlとしてContent-Typeを定義していることを確認し、また、フロー変数のmime-typeを別のxmlを格納するapplication/xmlに設定してください
また、rを終了していないことがわかっているので、response1 xmlとresponse2 xmlの両方が有効であることを確認してくださいOOTタグ

0

最も簡単な方法は、希望は、この変換をメッセージに「ペイロードをフラット化」、ペイロードの使用を組み合わせること

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> 

のようにオブジェクトを追加するようなものです。両方を組み合わせて、単一のペイロードとして表示します。

関連する問題