【问题标题】:Mule ESB Transform Message xml conversionMule ESB Transform Message xml转换
【发布时间】:2016-05-16 07:02:15
【问题描述】:

xml 在 mule 转换消息中进行格式转换时遇到一个问题。

我有一个输入 xml 文件。

我必须将输入xml 转换为输出xml,其中节点结构不同且节点名称不同。 我使用数据转换消息进行此转换,但在某一时刻,它显示预期格式是对象和找到的字符串。 任何人都可以帮助我吗?

"类型不匹配 找到 :name, :string 需要:名称,:对象(com.mulesoft.weave.mule.exception.WeaveExecutionException)。消息负载类型:WeaveMessageProcessor$WeaveOutputHandler"

input payload 
<?xml version="1.0" encoding="utf-8"?>
 <AGREEMENT>
  <details>
  <newTransaction>N</newTransaction> 
   <type>ddd</type> 
   </details>
 </AGREEMENT>

output Payload

 <?xml version="1.0" encoding="utf-8"?>
  <soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"       xmlns:xsd="http://www.w3.org/2001/XMLSchema"     xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Header>
<TestHeader xmlns="TestWebService">
    <Username>aaa</Username>
    <Password>aaa</Password>
</TestHeader>
 </soap:Header>
    <soap:Body>
        <AGRMNT>
        <testId>
        <_-Test_Agrmnt- SEGMENT="1">
            <transaction>N</transaction>
        </__-Test_Agrmnt->
    </testId>
  </AGRMNT>
 </soap:Body>
</soap:Envelope>

数据编织代码

%dw 1.0
%output application/xml
 %namespace soap http://schemas.xmlsoap.org/soap/envelope/

{
 soap#Envelope: {
    soap#Body: {

        AGREEMENT: {

            testId: {
            '_-Test_Agrmnt-': {

                    transaction: payload.AGREEMENT.details.newTransaction as   :string
                    }
                }
            }
        }}

【问题讨论】:

  • 你能提供你的xml输入输出吗?
  • 您的输出文件格式不正确。请发布预期输出

标签: mule mule-studio mule-component mule-el


【解决方案1】:

你的输入和脚本有以下输出

<?xml version='1.0' encoding='UTF-8'?>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
  <soap:Body>
    <AGREEMENT>
      <testId>
         <_-Test_Agrmnt->
           <transaction>N</transaction>
         </_-Test_Agrmnt->
     </testId>
   </AGREEMENT>
 </soap:Body>
</soap:Envelope>

唯一的变化是在脚本中添加 ---

<dw:transform-message doc:name="Transform Message">
            <dw:set-payload><![CDATA[%dw 1.0
                %output application/xml
                %namespace soap http://schemas.xmlsoap.org/soap/envelope/
                ---
                {
                 soap#Envelope: {
                    soap#Body: {

                        AGREEMENT: {

                            testId: {
                            '_-Test_Agrmnt-': {

                                    transaction: payload.AGREEMENT.details.newTransaction as :string
                                    }
                                }
                            }
                        }}}]]>
        </dw:set-payload>
        </dw:transform-message>

【讨论】:

    猜你喜欢
    • 2014-02-18
    • 2018-07-25
    • 1970-01-01
    • 1970-01-01
    • 2016-07-18
    • 1970-01-01
    • 2015-09-16
    • 2015-07-16
    • 2023-03-16
    相关资源
    最近更新 更多