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

NetSuite中CAMT053解析器与金融机构连接脚本报错求助

NetSuite CAMT053解析器调用context.addDataChunk报SSS_XML_DOM_EXCEPTION错误解决方法

问题核心

调用context.addDataChunk()传递XML字符串给NetSuite默认CAMT053解析器时,触发SSS_XML_DOM_EXCEPTION,错误提示「不允许匹配[xX][mM][lL]的处理指令目标」。尽管XML格式验证通过、本地XML与DOM互转正常,但解析器仍报错。

解决方案

1. 彻底清理XML字符串中的敏感内容

错误根源是解析器严格禁止XML声明(<?xml ...?>)及潜在的BOM字节标记,需彻底清理:

  • 移除所有大小写形式的XML处理指令
  • 移除UTF-8 BOM字符(若文件存在)
  • 清理前导/尾随空白及冗余换行

2. 确保传递标准CAMT053结构XML

确认XML根节点为<Document>,完全符合CAMT053规范,避免嵌套错误或多余节点干扰解析。

3. 利用NetSuite XML工具类生成标准字符串

通过nXml.Parser将XML转换为DOM后再转回字符串,确保输出格式适配NetSuite内部解析逻辑。

调整后的代码示例

function getTransactionData(context) {
    var configurationId = context.pluginConfiguration.getConfigurationFieldValue({ fieldName: "configuration_id" });
    var configuration = loadConfiguration(configurationId);

    var accountRequests = JSON.parse(context.accountRequestsJSON);
    nLog.audit({
        title: 'accountRequests',
        details: JSON.stringify(context.accountRequestsJSON)
    });

    if (accountRequests != null) {
        accountRequests.forEach(function (accountRequest) {
            var accountId = accountRequest.accountMappingKey;
            var fromDateTime = accountRequest.dataStartTime;
            var toDateTime = accountRequest.dataEndTime;
            
            // 加载XML文件
            let fileTestLoad = nFile.load({ id: 12345 });
            // 清理XML内容中的敏感部分
            var downloadedData = fileTestLoad.getContents()
                // 移除UTF-8 BOM字符
                .replace(/^\uFEFF/, '')
                // 移除所有大小写形式的XML声明
                .replace(/<\?[xX][mM][lL][^>]+\?>/g, '')
                // 清理前导/尾随空白
                .trim();

            // 用NetSuite工具类标准化XML字符串
            try {
                var xmlDoc = nXml.Parser.fromString({ text: downloadedData });
                var standardizedXml = nXml.Parser.toString({ document: xmlDoc });
                
                // 传递给CAMT053解析器
                context.addDataChunk({ dataChunk: standardizedXml });
            } catch (e) {
                nLog.error({
                    title: 'XML处理失败',
                    details: e.message + '\n原始数据片段: ' + downloadedData.substring(0, 200)
                });
            }
        });
    }
    context.returnAccountRequestsJSON({ accountsJson: context.accountRequestsJSON });
}

关键说明

  • 正则/<\?[xX][mM][lL][^>]+\?>/g精准匹配所有大小写变体的XML声明,避免遗漏
  • 移除BOM字符解决UTF-8文件开头不可见字符导致的解析异常
  • 通过NetSuite内置XML工具类标准化字符串,规避自定义字符串处理带来的格式兼容问题

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 01:20:12