You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过MuleSoft Transform组件从XML提取字符串类型值

解决MuleSoft中XML转JSON及提取字符串类型变量的问题

一、XML载荷转JSON

直接在Transform组件中用DataWeave完成转换,DataWeave会自动映射XML结构到JSON:

%dw 2.0
output application/json
---
payload

转换后得到的JSON结果:

{
  "TABLES": {
    "person_ID": "12345"
  }
}

二、提取字符串类型的person_ID变量

问题根源

未指定output时,Transform默认输出为application/xml,但表达式payload.TABLES.person_ID返回的是单独数值(无XML根元素),不符合XML结构规范,因此触发解析错误。指定output text/plain后,得到的是纯文本值——你误以为“无引号就不是字符串类型”,实际Mule中text/plain输出的变量本身就是String类型,只是显示时不会带引号;若要显式确保值为字符串类型,可通过以下两种方法实现:

方法1:显式转换为字符串(推荐)

用DataWeave的as String强制转换类型,同时指定输出为application/java,让变量保持Java String类型:

%dw 2.0
output application/java
---
(payload.TABLES.person_ID default "") as String

对应的Transform组件XML配置:

<ee:transform>
  <ee:variables>
    <ee:set-variable variableName="person_ID">
      <![CDATA[%dw 2.0
output application/java
---
(payload.TABLES.person_ID default "") as String]]>
    </ee:set-variable>
  </ee:variables>
</ee:transform>

方法2:保留text/plain输出,确认字符串类型

如果坚持用text/plain输出,变量本身已是String类型,后续可通过typeOf(vars.person_ID)验证类型。代码示例:

%dw 2.0
output text/plain
---
(payload.TABLES.person_ID default "") as String

验证变量类型

在后续Flow中添加Logger组件,使用表达式typeOf(vars.person_ID)输出变量类型,确认结果为String。

内容的提问来源于stack exchange,提问作者stewchicken

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.06 20:52:53