获取 XML 负载大小(以 MB 为单位)

问题描述 投票:0回答:1

我需要检查 XML 格式的传入有效负载的大小(以 MB 为单位)。如果大小超过特定 MB(例如 50 MB),我需要使用选择路由器来路由流。我在检查传入有效负载的大小时遇到问题。我尝试在 dataweave 中编写以下代码,但它给了我错误:

%dw 2.0
output application/json
var someXml = read(payload, "application/xml")
---
{
Size: sizeOf(write(someXml, "application/xml"))
}

下面是我正在尝试读取并检查其大小的示例请求 XML:

<ns0:session Destination="ALL" id="88888" ODSId="633d8812-b35b-4f12-8206-09f2d1a1455e" charge="-5941" count="1" dateStamp="2021-09-07T04:39:14" effectiveDate="2021-09-06" index="1" policyID="88888" sequence="3" transactionType="Cancel" transGroup="tE7E43B47B9234B15B5CE27444FA96909" transHistoryId="1051484" type="onset" OOSInsertIndex="1" finalReapplyCRPair="0" xmlns:ns0="http://Atlas.Schemas.Policy/1.0">
    <data id="d65845D5408974BC7BD8286A45AF48B9E" ODSId="633d8812-b35b-4f12-8206-09f2d1a1455e">
        <account id="a2F6F1D78A33C4C2CB980B68AE8349B19" ODSId="633d8812-b35b-4f12-8206-09f2d1a1455e">
            <SSN>123456789</SSN>
            <IDNumber>129</IDNumber>
            <name>testing</name>
            <driver change="0" written="0" id="d2788BE2CFE0E459DBDC221015A30A45C" deleted="0" ODSId="633d8812-b35b-4f12-8206-09f2d1a1455e">
                <DriverNo>0000000000000</DriverNo>
                <DriverLockedIndicator>0</DriverLockedIndicator>
            </driver>
        </account>
    </data>
</ns0:session>
mule dataweave mule-studio mulesoft mule4
1个回答
0
投票

你可以使用

sizeOf(payload.^raw)

这将返回底层流的大小,无需解析或重写

© www.soinside.com 2019 - 2024. All rights reserved.