mule - 无法在 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”。
解决方案
有两种方法可以设置变量。
- 使用设置变量组件
- 正在使用数据编织转换。
我使用了第二种方法,我可以看到我能够设置变量
这是小示例应用程序的完整代码:
<?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="<Weather>
<City>London,uk</City>
<appid>b6907d289e10d714a6e88b30761fae22</appid>
<CIF>CIF20257</CIF>
</Weather>" 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>
如果您对如何通过“转换消息”组件定义变量有疑问,请告诉我,我可以向您演示。
在转换消息中定义变量
推荐阅读
- python - Numpy 数组限制操作 X[X < {value}] = {value}
- java - 如何解析可能是字符串并且可能是杰克逊数组的字段
- python-3.x - 将日期时间插入数据库
- node.js - 在没有类的情况下对 html 表进行刮擦和迭代
- python - 在 Python 中使用 pathlib ( \u2069 ) 获取文件夹错误
- python - 使用 NRF24L01 将 Arduino 浮点值转换为 Python
- regex - 使用 wget 和 grep 从页面中提取超链接
- elixir - 如何在设备神经上复制crt文件
- assembly - Objdump 在已编译的程序集中将 fsubrp 交换为 fsubp?
- python - 查找具有给定长度的“运行”的十进制字符串的数量