MuleSoft(DataWeave)读取XML文件设为Transform Message负载报错求助
解决思路
错误原因
你用Mule::p('file::src/test/resources/inbound.xml')读取到的是字符串格式的XML内容,直接指定output application/xml时,DataWeave会把这个字符串当作普通文本处理,而非合法的XML节点结构,导致输出的XML违反语法规则(比如把完整XML字符串放在根元素外的区域),触发报错。
可行解决方案
方案1:解析字符串为XML对象后输出(推荐)
使用DataWeave的read()函数,将读取到的XML字符串解析成XML节点,再输出为XML格式,保证输出的XML结构合法:
%dw 2.0 output application/xml --- read(Mule::p('file::src/test/resources/inbound.xml'), "application/xml")
方案2:直接输出文本后再解析
如果不想在Transform Message里处理解析,可先输出纯文本,后续用Parse XML组件将文本转为XML对象:
%dw 2.0 output text/plain --- Mule::p('file::src/test/resources/inbound.xml')
之后添加Parse XML组件,配置输入为该文本,即可得到XML格式的负载。
方案3:直接读取并解析文件(Mule 4.3+适用)
如果你的Mule版本是4.3及以上,可直接用file::read()函数读取文件并解析为XML对象,省去属性读取步骤:
%dw 2.0 output application/xml --- file::read("src/test/resources/inbound.xml", "application/xml")
注意要确保文件路径正确,且应用拥有该文件的读取权限。
内容的提问来源于stack exchange,提问作者stewchicken
相关产品推荐
相关产品推荐

