无法在Mule4中的变量中设置XML有效负载
我是Mule4的新手。我的输入消息是XML,它没有在变量中设置 我也尝试过使用不同的mime类型,但不起作用。但是,当我以JSON格式而不是XML格式发送输入时,它确实可以工作 我通过postman使用以下XML无法在Mule4中的变量中设置XML有效负载,mule,mule-studio,anypoint-studio,Mule,Mule Studio,Anypoint Studio,我是Mule4的新手。我的输入消息是XML,它没有在变量中设置 我也尝试过使用不同的mime类型,但不起作用。但是,当我以JSON格式而不是XML格式发送输入时,它确实可以工作 我通过postman使用以下XML <Weather> <City>London,uk</City> <appid>b6907d289e10d714a6e88b30761fae22</appid> <CIF>CIF20257&
<Weather>
<City>London,uk</City>
<appid>b6907d289e10d714a6e88b30761fae22</appid>
<CIF>CIF20257</CIF>
</Weather>
英国伦敦
b6907d289e10d714a6e88b30761fae22
CIF20257
我讨论的代码的配置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-尝试在主元素树之外输出非空白字符(在prolog或
在编写Xml.Trace:at main(未知)时
表达方式:“有效载荷、天气、城市”。
有两种方法可以实现设置变量
<?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>
如果您对如何通过“transform message”组件定义变量有疑问,请告诉我,我可以向您演示
在转换消息中定义变量
有两种方法可以实现设置变量
<?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>
如果您对如何通过“transform message”组件定义变量有疑问,请告诉我,我可以向您演示
在转换消息中定义变量
当我从Mule 3心态转向Mule 4时,我遇到了这个问题。错误的原因是变量的类型是XML,但您正在尝试向其写入非XML
payload.Weather.City
的输出是字符串literalLondon,uk
,它不是有效的XML。有几个选项可以解决这个问题
当我从Mule 3心态转向Mule 4时,我遇到了这个问题。错误的原因是变量的类型是XML,但您正在尝试向其写入非XML
payload.Weather.City
的输出是字符串literalLondon,uk
,它不是有效的XML。有几个选项可以解决这个问题
您是否尝试过为映射创建元数据?您是否尝试过为映射创建元数据?非常感谢,先生,两种解决方案都工作得非常好。非常感谢,先生,两种解决方案都工作得非常好。尽管我的查询已通过将set变量组件的输出类型更改为java得到解决。但我仍然很想知道如何通过转换消息设置变量。谢谢,尽管我的查询已经通过将set变量组件的输出类型更改为java来解决。但我仍然很想知道如何通过转换消息设置变量。非常感谢
<set-variable value="#[output application/java --- payload.Weather.City]" doc:name="Set Variable" variableName="test" />