Fast XML Parser 中的 XMLBuilder 使用指南

Fast XML Parser 中的 XMLBuilder 使用指南

【免费下载链接】fast-xml-parser Validate XML, Parse XML and Build XML rapidly without C/C++ based libraries and no callback. 【免费下载链接】fast-xml-parser 项目地址: https://gitcode.com/gh_mirrors/fa/fast-xml-parser

前言

在数据处理和交换过程中,XML 作为一种通用的标记语言被广泛使用。Fast XML Parser 是一个高效的 JavaScript XML 处理工具,其中的 XMLBuilder 组件能够将 JavaScript 对象转换为 XML 格式。本文将详细介绍 XMLBuilder 的各种配置选项和使用方法。

基础用法

XMLBuilder 的基本使用非常简单:

const {XMLBuilder} = require('fast-xml-parser');

const options = {
    ignoreAttributes: false
};

const builder = new XMLBuilder(options);
let xmlDataStr = builder.build(jObj);

核心配置选项

1. 数组节点命名 (arrayNodeName)

当从数组构建 XML 时,建议设置 arrayNodeName 选项为特定名称:

const cars = [
    {
        "color": "purple",
        "type": "minivan",
        "capacity": 7
    },
    {
        "color": "orange",
        "type": "SUV",
        "capacity": 4
    }
];

const builder = new XMLBuilder({
    arrayNodeName: "car",
    format: true
});
const output = builder.build(cars);

输出结果:

<car>
    <color>purple</color>
    <type>minivan</type>
    <capacity>7</capacity>
</car>
<car>
    <color>orange</color>
    <type>SUV</type>
    <capacity>4</capacity>
</car>

2. 属性处理

  • attributeNamePrefix: 识别 JS 对象中的属性前缀
  • attributesGroupName: 识别属性分组
  • attributeValueProcessor: 自定义属性值处理函数

3. 特殊内容处理

  • cdataPropName: 识别 CDATA 内容
  • commentPropName: 识别注释内容

示例:

const options = {
    cdataPropName: "phone",
    commentPropName: "note"
};

4. 格式化输出

通过 format: true 可以生成格式化的 XML:

const options = {
    format: true,
    indentBy: "    " // 使用4个空格缩进
};

5. 节点顺序保留 (preserveOrder)

当使用 XMLParser 解析 XML 时设置了 preserveOrder: true,构建 XML 时也应使用相同选项:

const options = {
    preserveOrder: true
};

高级特性

1. 布尔属性处理 (suppressBooleanAttributes)

可以省略值为 true 的属性值:

const options = {
    suppressBooleanAttributes: true
};

输入:

{
    "@_enabled": true
}

输出:

<element enabled/>

2. 空节点处理 (suppressEmptyNode)

控制空节点的表现形式:

const options = {
    suppressEmptyNode: true
};

输出:

<emptyNode/>

3. 非成对标签 (unpairedTags)

处理如 <br> 这样的非成对标签:

const options = {
    unpairedTags: ["br", "img"]
};

4. 列表分组 (oneListGroup)

将多个子节点分组到单个父节点中:

const options = {
    oneListGroup: true
};

最佳实践

  1. 保持解析和构建选项一致:特别是 attributeNamePrefixpreserveOrder 等关键选项
  2. 性能优化:如果没有实体处理需求,设置 processEntities: false
  3. 格式控制:生产环境可以关闭格式化 (format: false) 以减少输出体积
  4. 特殊内容处理:明确指定 CDATA 和注释的属性名以避免混淆

常见问题解决方案

问题1:如何保留原始 XML 结构?

解决方案:使用相同的解析和构建选项,特别是 preserveOrder: true

问题2:属性处理不正确?

解决方案:检查 attributeNamePrefixignoreAttributes 设置

问题3:特殊内容(CDATA/注释)丢失?

解决方案:明确指定 cdataPropNamecommentPropName

结语

Fast XML Parser 的 XMLBuilder 提供了强大而灵活的 XML 构建能力,通过合理配置各种选项,可以满足从简单到复杂的各种 XML 生成需求。理解并掌握这些配置选项,将帮助开发者高效地处理 XML 数据转换任务。

【免费下载链接】fast-xml-parser Validate XML, Parse XML and Build XML rapidly without C/C++ based libraries and no callback. 【免费下载链接】fast-xml-parser 项目地址: https://gitcode.com/gh_mirrors/fa/fast-xml-parser

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值