fast-xml-parser vs xml2js vs body-parser-xml vs express-xml-bodyparser
XML 解析和处理
fast-xml-parserxml2jsbody-parser-xmlexpress-xml-bodyparser类似的npm包:

XML 解析和处理

XML 解析和处理库是用于在 JavaScript 应用程序中解析、生成和操作 XML(可扩展标记语言)数据的工具。这些库提供了 API 来读取 XML 文档、提取数据、修改节点以及创建新的 XML 文档。它们在处理 Web 服务、配置文件和任何需要与 XML 格式交互的应用程序时非常有用。xml2js 是一个流行的库,提供简单的 API 将 XML 转换为 JavaScript 对象,反之亦然。fast-xml-parser 是一个高性能的解析器,专注于快速解析 XML,支持流式解析和轻量级配置。express-xml-bodyparser 是一个 Express 中间件,用于解析 XML 请求体并将其转换为 JavaScript 对象,适用于处理 XML 格式的 API 请求。body-parser-xml 是一个用于解析 XML 数据的中间件,集成了 body-parser,支持将 XML 请求体解析为 JavaScript 对象。

npm下载趋势

3 年

GitHub Stars 排名

统计详情

npm包名称
下载量
Stars
大小
Issues
发布时间
License
fast-xml-parser64,846,2203,040607 kB663 天前MIT
xml2js30,389,4524,9713.44 MB2483 年前MIT
body-parser-xml82,5433816.4 kB123 年前MIT
express-xml-bodyparser07112 kB117 个月前MIT

功能对比: fast-xml-parser vs xml2js vs body-parser-xml vs express-xml-bodyparser

解析性能

  • fast-xml-parser:

    fast-xml-parser 以其高性能和低内存占用而闻名,特别是在解析大型 XML 文件时。它是性能敏感应用的理想选择。

  • xml2js:

    xml2js 提供了灵活的解析性能,但在处理非常大的 XML 文件时可能会受到内存限制。它适合中小型 XML 文档的解析和生成。

  • body-parser-xml:

    body-parser-xml 的性能与 body-parser 类似,适合处理常规大小的 XML 请求体。对于大文件解析,可能需要注意内存使用。

  • express-xml-bodyparser:

    express-xml-bodyparser 的性能取决于底层解析器,但它主要用于处理 XML 请求体,适合中等大小的 XML 数据。

中间件集成

  • fast-xml-parser:

    fast-xml-parser 也不提供内置的中间件集成,但可以与任何框架结合使用,特别是在需要高性能解析的场景中。

  • xml2js:

    xml2js 是一个独立的库,提供解析和生成 XML 的功能,但不提供中间件集成。

  • body-parser-xml:

    body-parser-xml 作为 body-parser 的扩展,提供与 Express 应用程序的无缝集成,易于使用。

  • express-xml-bodyparser:

    express-xml-bodyparser 专为 Express 设计,提供简单的中间件集成,方便处理 XML 请求体。

XML 生成

  • fast-xml-parser:

    fast-xml-parser 也支持 XML 生成,但主要集中在高效解析。它的生成性能优越,但功能不如 xml2js 完善。

  • xml2js:

    xml2js 支持将 JavaScript 对象转换为 XML,提供灵活的生成选项,适用于需要自定义 XML 结构的场景。

  • body-parser-xml:

    body-parser-xml 主要用于解析 XML 数据,不支持 XML 生成。

  • express-xml-bodyparser:

    express-xml-bodyparser 主要关注 XML 解析,不提供 XML 生成的功能。

代码示例

  • fast-xml-parser:

    使用 fast-xml-parser 进行高性能 XML 解析

    const { XMLParser, XMLBuilder } = require('fast-xml-parser');
    const parser = new XMLParser();
    const builder = new XMLBuilder();
    
    // 解析 XML
    const xml = '<root><child>Hello</child></root>';
    const jsonObj = parser.parse(xml);
    console.log(jsonObj);
    
    // 生成 XML
    const xmlOutput = builder.build({ root: { child: 'Hello' } });
    console.log(xmlOutput);
    
  • xml2js:

    使用 xml2js 解析和生成 XML

    const xml2js = require('xml2js');
    const parser = new xml2js.Parser();
    const builder = new xml2js.Builder();
    
    // 解析 XML
    const xml = '<root><child>Hello</child></root>';
    parser.parseString(xml, (err, result) => {
      console.log(result);
    });
    
    // 生成 XML
    const obj = { root: { child: 'Hello' } };
    const xmlOutput = builder.buildObject(obj);
    console.log(xmlOutput);
    
  • body-parser-xml:

    使用 body-parser-xml 解析 XML 请求体

    const express = require('express');
    const bodyParserXml = require('body-parser-xml');
    
    const app = express();
    bodyParserXml.extend(app);
    
    app.post('/xml', (req, res) => {
      console.log(req.body);
      res.send('XML Received');
    });
    
    app.listen(3000, () => {
      console.log('Server running on port 3000');
    });
    
  • express-xml-bodyparser:

    使用 express-xml-bodyparser 解析 XML 请求体

    const express = require('express');
    const xmlBodyParser = require('express-xml-bodyparser');
    
    const app = express();
    app.use(xmlBodyParser());
    
    app.post('/xml', (req, res) => {
      console.log(req.body);
      res.send('XML Received');
    });
    
    app.listen(3000, () => {
      console.log('Server running on port 3000');
    });
    

如何选择: fast-xml-parser vs xml2js vs body-parser-xml vs express-xml-bodyparser

  • fast-xml-parser:

    选择 fast-xml-parser 如果您需要高性能的 XML 解析,特别是在处理大文件或需要快速解析的应用程序中。它的速度和内存效率使其适合性能敏感的应用。

  • xml2js:

    选择 xml2js 如果您需要一个功能全面且易于使用的库来解析和生成 XML。它提供了灵活的配置选项,适用于大多数 XML 处理场景。

  • body-parser-xml:

    选择 body-parser-xml 如果您需要一个与 body-parser 兼容的 XML 解析中间件,适用于处理 XML 请求体并将其解析为 JavaScript 对象。

  • express-xml-bodyparser:

    选择 express-xml-bodyparser 如果您正在构建一个使用 Express 的应用程序,并且需要处理 XML 格式的请求体。它提供了简单的中间件集成,方便快速解析 XML 数据。

fast-xml-parser的README

fast-xml-parser

NPM total downloads

Validate XML, Parse XML to JS Object, or Build XML from JS Object without C/C++ based libraries and no callback.

FXP logo
  • Validate XML data syntactically. Use detailed-xml-validator to verify business rules.
  • Parse XML to JS Objects and vice versa
  • Common JS, ESM, and browser compatible
  • Faster than any other pure JS implementation.

It can handle big files (tested up to 100mb). XML Entities, HTML entities, and DOCTYPE entites are supported. Unpaired tags (Eg <br> in HTML), stop nodes (Eg <script> in HTML) are supported. It can also preserve Order of tags in JS object


Your Support, Our Motivation

Try out our New Thoughts

  • WishIn - You need it if negative thoughts take over all the time
  • Flowgger: 90% less logs size and 90% less debugging time
    Flowgger Logging Framework
  • Text2Chart: interactive flow chart out of simple text.

Financial Support

Sponsor this project

donate button


fxp_sponsors

This is a donation. No goods or services are expected in return. Any requests for refunds for those purposes will be rejected.

Users

more

The list of users are mostly published by Github or communicated directly. Feel free to contact if you find any information wrong.


More about this library

How to use

To use as package dependency $ npm install fast-xml-parser or $ yarn add fast-xml-parser

To use as system command $ npm install fast-xml-parser -g

To use it on a webpage include it from a CDN

Example

As CLI command

$ fxparser some.xml

In a node js project

const { XMLParser, XMLBuilder, XMLValidator} = require("fast-xml-parser");

const parser = new XMLParser();
let jObj = parser.parse(XMLdata);

const builder = new XMLBuilder();
const xmlContent = builder.build(jObj);

In a HTML page

<script src="path/to/fxp.min.js"></script>
:
<script>
  const parser = new fxparser.XMLParser();
  parser.parse(xmlContent);
</script>

Bundle size

Bundle NameSize
fxbuilder.min.js6.5K
fxparser.min.js20K
fxp.min.js26K
fxvalidator.min.js5.7K

Documents

v3v4 and v5v6
documents
  1. Getting Started
  2. XML Parser
  3. XML Builder
  4. XML Validator
  5. Entities
  6. HTML Document Parsing
  7. PI Tag processing
  1. Getting Started
  2. Features
  3. Options
  4. Output Builders
  5. Value Parsers

note:

  • Version 6 is released with version 4 for experimental use. Based on its demand, it'll be developed and the features can be different in final release.
  • Version 5 has the same functionalities as version 4.

Performance

negative means error

XML Parser

  • Y-axis: requests per second
  • X-axis: File size

XML Builder

* Y-axis: requests per second

Usage Trend

Usage Trend of fast-xml-parser

NPM Usage Trend of fast-xml-parser

Supporters

Contributors

This project exists thanks to all the people who contribute. [Contribute].

Backers from Open collective

Thank you to all our backers! 🙏 [Become a backer]

License

  • MIT License

Donate $5