我正在调用一个返回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&event_id=#[flowVars.event]&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 :(得分:0)
您是否尝试过使用:
<logger message="Payload: #[message.payloadAs(java.lang.String)]" level="INFO"/>
改造后?
我对如何输出XML感到有些困惑。
输出在哪里?到日志?给来电者?到http请求?