Node.js的fast-xml-parser库是一款轻量且功能全面的XML处理工具,支持XML解析、生成、校验等常见操作,在需要对接XML格式接口的Node.js项目中应用十分广泛,下面介绍它的具体使用方法。

环境准备与安装
首先需要在Node.js项目中安装fast-xml-parser库,执行以下命令即可完成安装:
npm install fast-xml-parser
安装完成后,在代码中引入对应的模块就可以使用相关功能了。
XML解析为JSON
最常用的功能是将XML字符串解析为JSON对象,方便后续的数据处理。首先引入解析相关的模块,然后调用解析方法即可。
const { XMLParser } = require('fast-xml-parser');
// 待解析的XML字符串
const xmlData = `
<user>
<name>张三</name>
<age>25</age>
<hobbies>
<hobby>读书</hobby>
<hobby>运动</hobby>
</hobbies>
</user>
`;
// 创建解析器实例,可配置解析选项
const parser = new XMLParser({
ignoreAttributes: false, // 是否忽略属性,false表示保留属性
attributeNamePrefix: '@_', // 属性名的前缀
});
// 执行解析
const jsonObj = parser.parse(xmlData);
console.log(jsonObj);
上述代码执行后,输出的JSON对象结构如下,嵌套的XML节点会转换为对应的JSON层级:
{
user: {
name: '张三',
age: '25',
hobbies: {
hobby: ['读书', '运动']
}
}
}
JSON生成XML
如果需要将JSON对象转换为XML字符串,可以使用库中的XMLBuilder模块,操作逻辑和解析相反。
const { XMLBuilder } = require('fast-xml-parser');
// 待转换的JSON对象
const jsonData = {
user: {
name: '李四',
age: '30',
hobbies: {
hobby: ['旅游', '摄影']
}
}
};
// 创建生成器实例,可配置生成选项
const builder = new XMLBuilder({
format: true, // 是否格式化输出,true会添加换行和缩进
indentBy: ' ', // 缩进字符
ignoreAttributes: false,
});
// 执行生成
const xmlResult = builder.build(jsonData);
console.log(xmlResult);
生成的XML字符串会保持格式化的结构,方便阅读和后续使用。
XML格式校验
在处理外部传入的XML数据时,通常需要先校验XML格式是否合法,fast-xml-parser也提供了对应的校验能力。
const { XMLValidator } = require('fast-xml-parser');
// 合法的XML字符串
const validXml = '<root><child>test</child></root>';
// 不合法的XML字符串,缺少闭合标签
const invalidXml = '<root><child>test</root>';
const validResult = XMLValidator.validate(validXml);
const invalidResult = XMLValidator.validate(invalidXml);
console.log('合法XML校验结果:', validResult); // 输出true
console.log('不合法XML校验结果:', invalidResult);
// 输出错误信息对象,包含错误位置和原因
常用配置说明
解析和生成时可以通过配置选项调整行为,以下是一些常用的配置项说明:
- ignoreAttributes:是否忽略XML节点的属性,默认值为true,设置为false会保留属性,属性名会添加指定的前缀
- attributeNamePrefix:XML属性名的前缀,默认是@_,避免和节点名冲突
- format:生成XML时是否格式化输出,默认false,设置为true会添加换行和缩进
- suppressBooleanAttributes:是否压缩布尔类型的属性,默认false
注意事项
使用时需要注意XML特殊字符的处理,如果XML中包含<、>、&等字符,需要提前进行转义,否则解析会报错。另外解析后的JSON中节点值默认是字符串类型,如果需要转换为数字、布尔等类型,可以在解析时配置对应的转换选项。
如果是处理大体积的XML文件,建议使用流式解析的方式,避免一次性加载全部内容占用过多内存,fast-xml-parser也支持流式处理的相关能力,可以根据实际需求选择使用。
Node.jsfast_xml_parserXML解析XML生成修改时间:2026-07-16 09:27:13