fast-xml-parser 是轻量快速的无依赖 Node.js XML 解析库,支持 parse(XML→JS)、validate(语法校验)和 builder(JS→XML),默认属性用@_前缀、文本存#text,可通过选项控制类型转换与格式化。

fast-xml-parser 是一个轻量、快速、无依赖的 Node.js XML 解析库,适合把 XML 字符串转成 JavaScript 对象(parse),也支持反向操作(build)。它不基于 DOM,也不需要 XML Schema,开箱即用。
安装和基本导入
在项目中安装:
npm install fast-xml-parser在代码中引入(ESM 或 CommonJS 都支持):
ESM 方式(推荐):
import { parse, validate, builder } from 'fast-xml-parser';
CommonJS 方式:
const { parse, validate, builder } = require('fast-xml-parser');
解析 XML 字符串为 JS 对象
最常用的是 parse()。默认行为会把属性转为 @_ 开头的键,文本内容放在 #text 键下。
- 简单示例:
const xml = ``; const jsObj = parse(xml); // 结果: // { // "book": { // "@_id": "123", // "title": { "#text": "JavaScript Guide" }, // "author": { "#text": "John Doe" } // } // } JavaScript Guide John Doe
- 常用配置项(传入第二个参数 options):
• ignoreAttributes: false → 默认 true,设为 false 可保留属性(如 id 直接作为 book.id)
• parseAttributeValue: true → 把属性值也尝试转数字/布尔/空字符串
• parseTagValue: true → 同样处理文本内容(如 "true" → true)
• ignoreDeclaration: true → 跳过 声明
• ignorePi: true → 忽略处理指令(如 )
验证 XML 格式是否合法
用 validate() 快速检查 XML 字符串语法,避免 parse 报错:
const isValid = validate(xml);
if (isValid !== true) {
console.error('XML error:', isValid.err.msg);
} else {
const result = parse(xml);
}
返回 true 表示合法;否则返回含 err 属性的对象,含行号、列号和错误信息。
把 JS 对象转回 XML 字符串
用 builder 实例生成 XML:
const obj = {
book: {
"@_id": "123",
title: "JavaScript Guide",
author: "John Doe"
}
};
const builderOptions = {
ignoreAttributes: false,
format: true, // 美化缩进
indentBy: " "
};
const xmlBuilder = new builder(builderOptions);
const xmlString = xmlBuilder.build(obj);
注意:如果原始对象用了 @_xxx 表示属性,要确保 ignoreAttributes: false,否则属性会被当普通字段输出。
基本上就这些。它不复杂但容易忽略配置细节,建议第一次用时打开 parseAttributeValue 和 parseTagValue,让数字/布尔更“像 JS”。










