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

如何移除XML输出中的特殊字符?DataWeave转换技术咨询

XML转换特殊字符处理方案

问题核心

你在使用DataWeave将JSON转XML时,遇到特殊字符(如输入里的&)被自动转义的问题,需要输出保留原始值,同时想了解如何修剪或移除负载中的特殊字符。

一、保留原始值(禁止转义)

注意:XML语法规范要求&、<、>等字符必须转义,直接输出未转义的特殊字符会生成不符合规范的XML,可能导致下游解析失败。如果业务场景确实需要强制保留原始字符串,可修改输出配置:

将脚本的输出行改为:

output application/xml escapeXML=false

完整脚本:

%dw 2.0
output application/xml escapeXML=false
---
{
    "Order": {
        id: {
            Detail: {
                Line: payload.Order.Line map {
                    frame: {
                        Desc: $.Desc,
                        DescDeatails: $.buyerDesc
                    }
                }
            }
        }
    }
}

提醒:非必要不建议关闭转义,这会破坏XML的合法性。如果下游系统遵循XML标准,转义后的&amp;会被自动解析为&,无需额外处理。

二、修剪/移除特殊字符的方法

DataWeave提供字符串处理函数,可按需移除或修剪特殊字符:

1. 移除指定特殊字符

用replace函数匹配目标字符替换为空,比如移除&:

Desc: $.Desc replace /&/ with ""

2. 保留合法字符(移除所有非指定字符)

只保留字母、数字和空格,移除其他所有字符:

Desc: $.Desc replace /[^a-zA-Z0-9 ]/ with ""

3. 修剪首尾空白+移除特殊字符

结合trim()函数处理首尾空白,再移除特殊字符:

Desc: $.Desc trim() replace /&/ with ""

带字符移除的完整脚本示例

%dw 2.0
output application/xml escapeGT=true
---
{
    "Order": {
        id: {
            Detail: {
                Line: payload.Order.Line map {
                    frame: {
                        Desc: $.Desc replace /&/ with "",
                        DescDeatails: $.buyerDesc trim()
                    }
                }
            }
        }
    }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 06:27:46