xmlbuilder-js 是 Node.js 中推荐的轻量 XML 生成库,支持声明、缩进、属性、CDATA、命名空间等,API 链式调用清晰,自动处理转义与编码,可便捷写入文件。

Node.js 生成 XML 文件,xmlbuilder-js 是一个轻量、易用且维护活跃的库,比原生拼接字符串或使用过时的 xmlbuilder(v1)更推荐。它支持声明、缩进、属性、CDATA、命名空间等常见需求,API 清晰直观。
安装与基础用法
先通过 npm 安装:
npm install xmlbuilder-js
最简示例:生成一个带根节点和子节点的 XML:
const builder = require('xmlbuilder-js');
const xml = builder.create('root')
.ele('item').att('id', '1').txt('Hello').up()
.ele('item').att('id', '2').txt('World');
console.log(xml.end({ pretty: true }));
输出为格式化 XML:
常用操作:属性、文本、子元素与 CDATA
构建过程中可链式调用,每个方法返回当前节点(便于连续操作):
-
添加属性:用
.att(key, value),支持多个(如.att({id: '1', type: 'text'})) -
设置文本内容:用
.txt(value)(自动转义特殊字符),或.cdata(value)包裹 CDATA 块 -
添加子元素:用
.ele(name)创建并进入该节点;.up()返回父节点 -
插入纯文本或注释:用
.raw('')或.text('\n')
写入文件与配置输出
生成的 XML 字符串可通过 Node.js 的 fs 模块写入文件:
const fs = require('fs');
const xmlStr = xml.end({
pretty: true, // 是否缩进
indent: ' ', // 缩进字符,默认为两个空格
encoding: 'UTF-8' // XML 声明中的 encoding 属性
});
fs.writeFileSync('output.xml', xmlStr);
处理数组与动态结构
遇到列表数据时,可配合 Array.map 或循环构造子节点:
const items = [{id: 1, name: 'Apple'}, {id: 2, name: 'Banana'}];
const xml = builder.create('fruits');
items.forEach(item => {
xml.ele('fruit').att('id', item.id).txt(item.name);
});
console.log(xml.end({ pretty: true }));
输出:
不复杂但容易忽略细节,比如编码声明、属性顺序、特殊字符转义——xmlbuilder-js 默认都帮你处理好了。










