2015-08-21 45 views
0

我们是EE客户,目前在3.5.2上。我正在将应用从3.5.2迁移到3.6。我注意到什么在3.5.2工作在3.6不再工作下面的代码片段XQuery转换

<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以XML转换器不产生XML文档并返回一个DOM对象网。 [email protected] PANPW2记录器输出xml文档。记录器PANPWFlow3正在输出一个正确的DOM对象。成功的dom-xml转换器无所事事。这与3.5.2一起工作任何帮助将不胜感激。

谢谢。

回答

0

xquery-transformer的返回类型在3.5.2和3.6之间变化。

  • 3.5.2setReturnDataType(DataTypeFactory.create(Element.class));
  • 3.6.2setReturnDataType(DataTypeFactory.create(List.class));

dom-to-xml-transformer不支持List作为源类型,所以它只是跳过。

为了解决这个问题,你需要决定要与返回的列表做什么:

  • 使用for-eachall处理所有的List元素(如图所示here)。里面的for-eachall,该dom-to-xml-transformer会再工作,因为该消息有效载荷将被一个DOM元素,
  • 假设该列表是一个独立的,并与dom-to-xml-transformer之前设置它的第一项作为有效载荷:

    <set-payload value="#[message.payload[0]]" /> 
    
+1

谢谢大卫我会努力工作并回复你。及时的建议再次感谢。 – hpandalai

+1

再次感谢David我使用了单例选项,因为它适用于我。 – hpandalai