2016-11-02 3 views
0

私はXMLを返すサービスを呼び出しています。私は、各イベントid(通常は2)にサービスを呼び出し、dataweaveを使用して2つのxmlを1つの結果にステッチする必要があります。Mule - For Each&Message Enricherの後にXMLをつなぐ

私の流れは、XML形式の結果をタイプorg.glassfish.grizzly.utils.BufferInputStreamとして配列に入れています。

XMLとして出力する方法について、少し混乱しています。私は運がないXMLにオブジェクトのような様々な変圧器を試してみました。

私の現在のデータ・ウィーブ・トランスフォーマーは、xmlの結果を正しいxmlフォーマットを持たない文字列として出力し、xmlノードにアクセスしようとすると型変換エラーを返します。

Sample XML: 

<?xml version="1.0" encoding="UTF-8" standalone="no" ?> 
<xml> 
    <result> 
     <event> 
      <id>1</id> 
      <name>Item 1</name> 
      <title>Item 1 title</title> 
     </event> 
    </result> 
</xml> 




<?xml version="1.0" encoding="UTF-8" standalone="no" ?> 
<xml> 
    <result> 
     <event> 
      <id>2</id> 
      <name>Item 2</name> 
      <title>Item 2 title</title> 
     </event> 
    </result> 
</xml> 

ラバフロー:あなたの変換後

<logger message="Payload: #[message.payloadAs(java.lang.String)]" level="INFO"/> 

Mule Flow: 
<flow name="eventsFlow"> 
    <http:listener config-ref="HTTP_Listener_Configuration" path="/eventsTest" doc:name="HTTP"/> 
    <set-variable variableName="event" value="#[{'1','2'}]" doc:name="Event ID's"/> 
    <set-variable variableName="results" value="#[new java.util.ArrayList()]" doc:name="Results"/> 
    <foreach collection="#[flowVars['event']]" doc:name="For Each"> 
     <enricher target="#[results.add($)]" doc:name="Message Enricher"> 
      <http:request config-ref="HTTP_Request_Configuration" path="/api_xml/api_xml.php?function=get_personal_results&amp;event_id=#[flowVars.event]&amp;key=INSERT_KEY_HERE" method="GET" metadata:id="dfa451b2-1ad5-4b27-bed9-841e5d0995b8" doc:name="Result Request"/> 
     </enricher> 
    </foreach> 
    <set-payload value="#[flowVars.results]" doc:name="Payload"/> 
    <dw:transform-message metadata:id="3875f88d-e232-42e7-93c9-184baf7c216f" doc:name="Transform Message"> 
     <dw:set-payload><![CDATA[ 
%dw 1.0 
%output application/xml 
--- 
xml: { 
    (payload map { 
     result: { 
      event: $ 
     } 
    } 

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

答えて

0

は、あなたが使用してみましたか?

XMLとして出力する方法について少し混乱します。

出力?ログに?発信者に? httpリクエストに?

+0

こんにちはチャド、ロガー出力:ペイロード:[org.glassfish.grizzly.uti [email protected]、[email protected] 70c76]。私はただHTTPリクエストに出力しようとしています。 – Steve