首页 > 解决方案 > 无法在 Mule4 的变量中设置 XML 有效负载

问题描述

我是Mule4的新手。我的输入消息是未在变量中设置的 XML。

我也尝试过使用不同的 mime 类型,但不起作用。但是,当我以 JSON 格式而不是 XML 发送输入时,它确实有效。

我通过邮递员使用以下 XML

<Weather>
    <City>London,uk</City>
    <appid>b6907d289e10d714a6e88b30761fae22</appid>
    <CIF>CIF20257</CIF>
</Weather>

我在讨论中的代码的配置 XML 是

<set-variable value="#[payload.Weather.City]" doc:name="Set Variable" doc:id="b98b3ec8-c1f7-436d-9bcf-49eb0ca8a033" variableName="test" mimeType="application/xml"/>

显示的错误是

“javax.xml.stream.XMLStreamException - 在编写 Xml 时尝试在主元素树之外(在序言或结语中)输出非空白字符。跟踪:在 main(未知)”评估表达式:“payload.Weather.City”。

标签: mulemule-studioanypoint-studio

解决方案


有两种方法可以设置变量。

  1. 使用设置变量组件
  2. 正在使用数据编织转换。

我使用了第二种方法,我可以看到我能够设置变量

在此处输入图像描述

这是小示例应用程序的完整代码:

    <?xml version="1.0" encoding="UTF-8"?>

<mule xmlns:ee="http://www.mulesoft.org/schema/mule/ee/core" xmlns:http="http://www.mulesoft.org/schema/mule/http"
    xmlns="http://www.mulesoft.org/schema/mule/core"
    xmlns:doc="http://www.mulesoft.org/schema/mule/documentation" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.mulesoft.org/schema/mule/core http://www.mulesoft.org/schema/mule/core/current/mule.xsd
http://www.mulesoft.org/schema/mule/http http://www.mulesoft.org/schema/mule/http/current/mule-http.xsd
http://www.mulesoft.org/schema/mule/ee/core http://www.mulesoft.org/schema/mule/ee/core/current/mule-ee.xsd">
    <http:listener-config name="HTTP_Listener_config" doc:name="HTTP Listener config" doc:id="23645d25-1194-4fcd-ae19-ffae9b9388f8" basePath="/play" >
        <http:listener-connection host="localhost" port="8081" />
    </http:listener-config>
    <flow name="z_playFlow" doc:id="2ae13c16-4e1e-4203-96c3-9d372ce41c63" >
        <http:listener doc:name="Listener" doc:id="9fa851c0-a05b-46e1-9ba4-f2433c80d67a" config-ref="HTTP_Listener_config" path="/setxml"/>
        <set-payload value="&lt;Weather&gt;
    &lt;City&gt;London,uk&lt;/City&gt;
    &lt;appid&gt;b6907d289e10d714a6e88b30761fae22&lt;/appid&gt;
    &lt;CIF&gt;CIF20257&lt;/CIF&gt;
&lt;/Weather&gt;" doc:name="Set Payload" doc:id="7d122f45-6025-4fb8-a7d4-e1ec0873f40b" mimeType="application/xml"/>
        <ee:transform doc:name="Transform Message" doc:id="af6467e5-7177-403c-b9c0-62fb816b8f60" >
            <ee:message >
            </ee:message>
            <ee:variables >
                <ee:set-variable variableName="var" ><![CDATA[%dw 2.0
output application/xml
---

city: payload.Weather.City]]></ee:set-variable>
            </ee:variables>
        </ee:transform>
        <logger level="INFO" doc:name="Logger" doc:id="8cbdcf0f-8b3e-4645-9475-887b9628bc05" message="#[payload]"/>
    </flow>
</mule>

如果您对如何通过“转换消息”组件定义变量有疑问,请告诉我,我可以向您演示。


在转换消息中定义变量

  1. 当您拉入转换消息组件时,默认输出类型是有效负载。像这样 在此处输入图像描述

  2. 单击编辑当前目标(笔)选项,该选项将打开一个选择对话框,然后在输出下拉列表中选择变量并提供变量名称:

    在此处输入图像描述


推荐阅读