新闻中心

Node.js的fast-xml-parser库怎么用

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

node.js的fast-xml-parser库怎么用

fast-xml-parser 是一个轻量、快速、无依赖的 Node.js XML 解析库,适合把 XML 字符串转成 J*aScript 对象(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 键下。

拾贝 拾贝

一键同步微信读书所有笔记和划线,并在新标签页回顾

拾贝 186 查看详情 拾贝
  • 简单示例:
const xml = `<book id="123"><title>J*aScript Guide</title><author>John Doe</author></book>`;
const jsObj = parse(xml);
// 结果:
// {
//   "book": {
//     "@_id": "123",
//     "title": { "#text": "J*aScript Guide" },
//     "author": { "#text": "John Doe" }
//   }
// }
  • 常用配置项(传入第二个参数 options):

ignoreAttributes: false → 默认 true,设为 false 可保留属性(如 id 直接作为 book.id
parseAttributeValue: true → 把属性值也尝试转数字/布尔/空字符串
parseTagValue: true → 同样处理文本内容(如 "true"true
ignoreDeclaration: true → 跳过 <?xml version="1.0"?> 声明
ignorePi: true → 忽略处理指令(如 <?xml-stylesheet ?>

验证 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: "J*aScript Guide",
    author: "John Doe"
  }
};
const builderOptions = {
  ignoreAttributes: false,
  format: true, // 美化缩进
  indentBy: "  "
};
const xmlBuilder = new builder(builderOptions);
const xmlString = xmlBuilder.build(obj);

注意:如果原始对象用了 @_xxx 表示属性,要确保 ignoreAttributes: false,否则属性会被当普通字段输出。

基本上就这些。它不复杂但容易忽略配置细节,建议第一次用时打开 parseAttributeValueparseTagValue,让数字/布尔更“像 JS”。

以上就是Node.js的fast-xml-parser库怎么用的详细内容,更多请关注其它相关文章!


# 如何用  # 郑州整站seo优化软件  # 越秀网络营销推广seo  # 营销推广发票名称怎么开  # 北京的seo服务公司  # 河西区如何做好营销推广  # 文旅品牌推广与市场营销  # 深州网站制作推广  # 巴州库尔勒seo优化  # 广州线上推广营销  # 关键字seo选择哪家  # 后端  # 客户端  # 的是  # javascript  # 转换为  # 它不  # 行号  # 布尔  # 拾贝  # 如何将  # red  # npm  # node  # node.js  # js  # java 


相关栏目: 【 科技资讯46185 】 【 网络学院92790


相关推荐: 腾讯视频怎么使用多账号家庭管理_腾讯视频家庭多账号统一管理与权限分配教程  天猫双十一预售商品怎么退款_天猫双十一预售退款操作指南  UC浏览器如何安装插件 UC浏览器添加扩展程序详细教程【进阶】  Go Martini框架:动态服务解码后的图片内容  网易大神账号申诉需要多久_网易大神账号申诉流程说明  Node.js 中使用 node-cron 实现定时 API 数据抓取与处理  三星ZFold5多任务卡顿_Samsung ZFold5流畅度提升  使用 Pandas 高效处理 .dat 文件:字符清理与数据计算  b站怎么取消点赞_b站点赞取消操作方法  解决 MongoDB 聚合查询中对象数组 _id 匹配问题  PHP URL参数传递与500错误调试指南  韩剧圈正版入口页面_韩剧圈官网登录链接  Python实时数据流中的动态最值查找策略  钉钉视频会议画面卡顿如何解决 钉钉会议画面优化方法  优化Log4j2控制台输出性能:解决异步日志瓶颈  QQ邮箱电脑版登录入口_QQ邮箱官方网站登录平台  处理Kafka消费者会话超时:深入理解消息处理语义与幂等性  Golang如何安装Swagger工具_GoSwagger文档生成环境  qq游戏免费畅玩入口_qq游戏电脑版快速启动  小红书怎么解除第三方平台绑定_小红书多平台登录解绑方法介绍  Composer如何在生产环境安全地执行composer update  C++如何实现一个装饰器模式_C++设计模式之动态地给对象添加额外职责  Composer的 "licenses" 命令如何帮助你遵守开源协议_检查项目依赖的许可证合规性  如何使用CaptainHook和Composer管理Git钩子_在提交前自动运行代码检查的Composer配置  初次安装JDK时环境变量如何正确配置_J*A_HOME与PATH设置规则讲解  Composer的 archive 命令怎么用_快速打包你的PHP项目及其Composer依赖  不会效仿卡普空!《铁拳》制作人澄清:不采取赛事付费|直播|  PDF怎么合并PDF并保持格式_PDF合并文件保持排版教程  HTML转PPT成品工具有哪些?HTML网页转PPT成品工具大全  KFC早餐时段怎么领特惠代码_KFC早餐订餐优惠代码获取与使用说明  漫画星球免费下拉式入口 漫画星球免费漫画在线阅读网站  漫蛙MANWA漫画主页官方入口 漫蛙漫画最新在线阅读地址  单12V-2&#215;6实现为RTX 5090供电750W!甚至都没敢跑分  小米14应用无法联网原因分析_小米14网络权限修复  中兴BladeV30怎样用测距估书架层高_iPhone中兴BladeV30测距估书架层高【家装参考】  Win11怎么用U盘重装系统 Win11制作启动盘并重装系统完整教程【详解】  抖音未来赚钱的新趋势 2025年值得关注的变现风口分析  HTML长属性值处理:表单action路径优化与代码规范应对  Angular中单选按钮的正确使用与常见陷阱解析  TikTok网页版直接登录 TikTok网页端官方平台入口  HTML元素状态管理:根据DIV内容动态启用/禁用按钮  品牌机怎么重装系统 联想/戴尔/惠普笔记本恢复出厂系统教程  CSS子选择器:如何区分并样式化嵌套列表的子层级  LINUX的perf命令入门_LINUX官方性能分析工具的使用与解读  Mac怎么查看崩溃日志_Mac控制台错误报告分析  优化LangChain文档加载与ChromaDB集成:解决多文档处理与分块问题  抖音极速版最新版本 抖音极速版官方下载地址  魅族20怎样在浏览器开无图省流_iPhone魅族20浏览器开无图省流【流量节省】  文心一言怎样用插件调度API数据_文心一言用插件调度API数据【API调用】  微博网页版怎么开启两步验证_微博网页版账号安全两步验证设置方法 

搜索