我们是一个EE客户,目前的3.5.2。我正在迁移一个从3.5.2到3.6的应用程序。我注意到在3.5.2中使用的不再是下面3.6中的代码片段
<logger message="PANPW2 #[message.payload]" level="INFO" doc:name="Logger"/>
<set-property propertyName="Content-Type" value="text/xml" doc:name="Property"/>
<mulexml:xquery-transformer name="xqueryAvatier">
<mulexml:xquery-text>
<![CDATA[
xquery version "3.0";
declare namespace soapenv = "http://www.w3.org/2003/05/soap-envelope";
declare namespace ivr = "http://example.com/IVR";
declare variable $document external;
<soapenv:Envelope xmlns:soapenv = "http://www.w3.org/2003/05/soap-envelope" xmlns:ivr="http://example.com/IVR">
<soapenv:Header/>
<soapenv:Body>
{$document}
</soapenv:Body>
</soapenv:Envelope>
]]>
</mulexml:xquery-text>
</mulexml:xquery-transformer>
<logger message="PANPWFlow3 #[message.payload]" level="INFO" doc:name="Logger"/>
<mulexml:dom-to-xml-transformer doc:name="DOM to XML"/>
<logger message="PANPWFlow4 #[message.payload]" level="INFO" doc:name="Logger"/>上一个dom to xml转换器不是生成xml文档,而是返回DOM对象net.sf.saxon.dom.ElementOverNodeInfo@104000,PANPW2记录器输出xml文档。记录器PANPWFlow3正在输出一个DOM对象,这是正确的。多姆-xml转换器的成功是什么也不做。这是与3.5.2的工作,任何帮助将不胜感激。
谢谢。
发布于 2015-08-21 19:01:21
xquery-transformer的返回类型在3.5.2和3.6之间发生了变化。
setReturnDataType(DataTypeFactory.create(Element.class));setReturnDataType(DataTypeFactory.create(List.class));dom-to-xml-transformer不支持List作为源类型,因此它只是被跳过。
要解决这个问题,您需要决定如何处理返回的列表:
for-each或all来处理所有List元素(如这里所示)。在for-each或all中,dom-to-xml-transformer将工作,因为消息有效负载随后将是DOM元素,dom-to-xml-transformer之前的有效载荷:https://stackoverflow.com/questions/32141161
复制相似问题