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

使用fast-xml-parser时如何保留数值前导零?

解决fast-xml-parser前导零丢失问题

当使用fast-xml-parser解析包含前导零的XML值(如<item>08</item>)时,默认会将这类值解析为数字,导致重新生成XML时丢失前导零。以下是具体的解决方案:

核心原因

你代码中设置的parseTrueNumberOnly: true理论上会阻止带前导零的字符串被解析为数字,但可能因版本兼容问题或配置遗漏未生效,导致08被转为数字8,最终生成XML时丢失前导零。

解决方案

方案1:强制所有文本解析为字符串(最稳妥)

修改XMLParser的配置,添加parseNumbers: false,让解析器将所有文本内容保留为字符串类型,不会自动转换为数字:

const { XMLParser, XMLBuilder, XMLValidator } = require("fast-xml-parser");

const options = {
    parseNumbers: false // 关闭自动数字解析,所有文本保留为字符串
};

const xmlInput = '<item>08</item>';
console.log(xmlInput);  

const parser = new XMLParser(options);
let jsonData = parser.parse(xmlInput);
console.log(JSON.stringify(jsonData)); // 输出 {"item":"08"}

const builder = new XMLBuilder();
const xmlOutput = builder.build(jsonData);
console.log(xmlOutput); // 输出 <item>08</item>

方案2:精细控制数字解析(保留合法数字解析)

如果你需要保留正常数字的解析能力(如123解析为数字),仅排除带前导零的字符串,请确保使用fast-xml-parser v4及以上版本,并使用如下配置:

const options = {
    parseTrueNumberOnly: true,
    numberParseOptions: {
        leadingZeros: false // 禁止解析带前导零的字符串为数字
    }
};

注意事项

  • XMLBuilder的配置与XMLParser独立,无需传递parser的options,只要JSON数据中的值为字符串类型,builder就会原样输出XML内容。
  • 若使用旧版本工具,建议升级到最新版以获得更稳定的配置支持。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 18:31:02