Mule - 在For Each& amp;之后将XML拼接在一起消息Enricher

时间:2016-11-02 01:18:05

标签: mule mule-el dataweave

我正在调用一个返回XML的服务。我需要为每个事件id(通常有2个)调用服务,然后使用dataweave将2个xml拼接成一个结果。

我的流程是将XML结果放入类型为:org.glassfish.grizzly.utils.BufferInputStream。

我对如何输出XML感到困惑。我已经尝试了各种变换器,例如对象到XML而没有运气。

我当前的dataweave转换器将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>

骡流:

    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>

1 个答案:

答案 0 :(得分:0)

您是否尝试过使用:

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

改造后?

  

我对如何输出XML感到有些困惑。

输出在哪里?到日志?给来电者?到http请求?