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

如何使用DataWeave获取XML消息负载的KB级大小

计算XML格式负载的大小(KB单位)

核心思路

不管是XML还是JSON,计算负载大小的本质是获取原始内容的字节数再转换为KB。你之前的方法失效,大概率是因为XML payload以DOM对象而非原始字符串/字节流存在,导致^raw无法正确获取原始内容。

具体实现方法

1. 转换XML为字符串后计算(DataWeave示例)

如果使用Mule的DataWeave,先将XML payload转为字符串再计算长度:

%dw 2.0
output application/json
---
(sizeOf(payload as String) / 1000) as Number // 若遵循标准KB定义,替换1000为1024

2. 直接获取原始字节数组(Groovy示例)

在Groovy脚本中,直接获取负载的字节数组长度,避免DOM对象的影响:

// 指定编码获取XML负载的字节数,避免编码差异导致计算错误
def byteLength = payload.getBytes("UTF-8").length
// 转换为KB(按需选择1000或1024)
def kbSize = byteLength / 1000

3. 直接读取消息原始内容(Mule表达式)

如果要获取整个消息的原始负载大小,不管格式,用Mule内置属性直接读取:

message.payloadAsBytes.length / 1000

注意事项

  • 编码差异:如果XML使用非UTF-8编码(如UTF-16),必须在getBytes()中指定对应编码,否则长度计算会出错。
  • KB定义:商业场景常以1000字节为1KB,计算机标准则是1024字节,根据业务需求选择除数。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 20:22:04