繁体   English   中英

如何在wso2 esb中将响应输出格式化为xml

[英]how to format the response output to xml in wso2 esb

我有一个SAP MII Web服务,当我使用soap ui尝试使用它时,响应为:

<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
       xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
       <soap:Body>
              <XacuteResponse xmlns="http://www.sap.com/xMII">
                     <Rowset>
                           <Row>
                                  <outxml><![CDATA[&lt;BAPI_PROCORD_GET_LIST&gt;
&lt;INPUT&gt;&lt;COLLECTIVE_ORDER/&gt;&lt;/INPUT&gt;
&lt;OUTPUT&gt;&lt;RETURN&gt;&lt;TYPE/&gt;&lt;ID/&gt;&lt;NUMBER&gt;000&lt;/NUMBER&gt;&lt;MESSAGE/&gt;&lt;LOG_NO/&gt;&lt;LOG_MSG_NO&gt;000000&lt;/LOG_MSG_NO&gt;&lt;MESSAGE_V1/&gt;&lt;MESSAGE_V2/&gt;&lt;MESSAGE_V3/&gt;&lt;MESSAGE_V4/&gt;&lt;PARAMETER/&gt;&lt;ROW&gt;0&lt;/ROW&gt;&lt;FIELD/&gt;&lt;SYSTEM/&gt;&lt;/RETURN&gt;&lt;/OUTPUT&gt;
&lt;TABLES&gt;&lt;MATERIAL_RANGE&gt;&lt;item&gt;&lt;SIGN&gt;I&lt;/SIGN&gt;&lt;OPTION&gt;EQ&lt;/OPTION&gt;&lt;LOW&gt;RUBBER_COMPOUND&lt;/LOW&gt;&lt;HIGH/&gt;&lt;/item&gt;&lt;/MATERIAL_RANGE&gt;&lt;MRP_CNTRL_RANGE/&gt;&lt;ORDER_HEADER&gt;&lt;item&gt;&lt;ORDER_NUMBER&gt;000070001202&lt;/ORDER_NUMBER&gt;&lt;PRODUCTION_PLANT&gt;3100&lt;/PRODUCTION_PLANT&gt;&lt;MRP_CONTROLLER/&gt;&lt;PRODUCTION_SCHEDULER/&gt;&lt;MATERIAL&gt;RUBBER_COMPOUND&lt;/MATERIAL&gt;&lt;EXPL_DATE&gt;2014-02-03&lt;/EXPL_DATE&gt;&lt;ROUTING_NO&gt;0000013579&lt;/ROUTING_NO&gt;&lt;RESERVATION_NUMBER&gt;0000069876&lt;/RESERVATION_NUMBER&gt;&lt;SCHED_RELEASE_DATE&gt;2014-02-03&lt;/SCHED_RELEASE_DATE&gt;&lt;ACTUAL_RELEASE_DATE&gt;2014-02-03&lt;/ACTUAL_RELEASE_DATE&gt;&lt;FINISH_DATE&gt;2014-02-03&lt;/FINISH_DATE&gt;&lt;START_DATE&gt;2014-02-03&lt;/START_DATE&gt;&lt;PRODUCTION_FINISH_DATE&gt;2014-02-03&lt;/PRODUCTION_FINISH_DATE&gt;&lt;PRODUCTION_START_DATE&gt;2014-02-03&lt;/PRODUCTION_START_DATE&gt;&lt;ACTUAL_START_DATE&gt;2014-02-04&lt;/ACTUAL_START_DATE&gt;&lt;ACTUAL_FINISH_DATE&gt;0000-00-00&lt;/ACTUAL_FINISH_DATE&gt;&lt;SCRAP&gt;0&lt;/SCRAP&gt;&lt;TARGET_QUANTITY&gt;100.000&lt;/TARGET_QUANTITY&gt;&lt;UNIT&gt;ST&lt;/UNIT&gt;&lt;UNIT_ISO&gt;PCE&lt;/UNIT_ISO&gt;&lt;PRIORITY/&gt;&lt;ORDER_TYPE&gt;PI01&lt;/ORDER_TYPE&gt;&lt;ENTERED_BY&gt;277458&lt;/ENTERED_BY&gt;&lt;ENTER_DATE&gt;2014-02-03&lt;/ENTER_DATE&gt;&lt;DELETION_FLAG/&gt;&lt;WBS_ELEMENT&gt;00000000&lt;/WBS_ELEMENT&gt;&lt;CONF_NO&gt;0000108111&lt;/CONF_NO&gt;&lt;CONF_CNT&gt;00000001&lt;/CONF_CNT&gt;&lt;INT_OBJ_NO&gt;000000000000000000&lt;/INT_OBJ_NO&gt;&lt;SCHED_FIN_TIME&gt;06:07:49&lt;/SCHED_FIN_TIME&gt;&lt;SCHED_START_TIME&gt;06:07:49&lt;/SCHED_START_TIME&gt;&lt;COLLECTIVE_ORDER/&gt;&lt;ORDER_SEQ_NO&gt;00000000000000&lt;/ORDER_SEQ_NO&gt;&lt;FINISH_TIME&gt;06:07:49&lt;/FINISH_TIME&gt;&lt;START_TIME&gt;06:07:49&lt;/START_TIME&gt;&lt;ACTUAL_START_TIME&gt;15:43:47&lt;/ACTUAL_START_TIME&gt;&lt;LEADING_ORDER/&gt;&lt;SALES_ORDER/&gt;&lt;SALES_ORDER_ITEM&gt;000000&lt;/SALES_ORDER_ITEM&gt;&lt;PROD_SCHED_PROFILE/&gt;&lt;MATERIAL_TEXT&gt;RubberCompound&lt;/MATERIAL_TEXT&gt;&lt;SYSTEM_STATUS&gt;TECO PCNF MACM SETC
&lt;/TABLES&gt;
&lt;/BAPI_PROCORD_GET_LIST&gt;]]></outxml>
                           </Row>
                     </Rowset>
              </XacuteResponse>
       </soap:Body>
</soap:Envelope>

问题是,当我创建Web服务的直通代理时,然后在soap ui中运行该服务时,会从esb获取垃圾值。 我想将此响应转换为格式正确的响应xml结构。 我尝试使用xslt,但它在esb中给出错误,因为无法创建响应结构 在Eclipse上运行时,相同的xslt可以正常工作。 请帮我。 在此先感谢您,并期待您的解决方案。

CDATA中的XML片段格式不正确(缺少结束标记)。

但是,假设您找到一种纠正此问题的方法,并且如果帖子中的给定语法恰好是您所收到的语法,则可以尝试以下方法:

1-获取CDATA内容:

<property name="CDATA_CONTENT" expression="$body//outxml"/>

2-使用以下内容创建一个新的XML属性:

<script language="js">mc.setProperty("XML_CONTENT",new XML(new XML(mc.getProperty('CDATA_CONTENT'))));</script>

3-从此XML片段中提取值:

<log level="custom">
  <property name="result" expression="get-property('XML_CONTENT')"/>
  <property name="orderNumber" expression="get-property('XML_CONTENT')//ORDER_NUMBER/text()"/>
</log>

4-使用此XML片段更改当前消息有效负载:

<script language="js">mc.setPayloadXML(new XML(new XML(mc.getProperty('CDATA_CONTENT'))));</script>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM