1.0.2 • Published 4 years ago

@tuananh/sax-parser v1.0.2

Weekly downloads
2
License
MIT
Repository
github
Last release
4 years ago

sax-parser npm version github actions ci travis ci

license

What this is

A very fast SAX parser for Node.js written in C++. Native module for performance reason.

Installation

yarn add @tuananh/sax-parser
# npm install @tuananh/sax-parser

Benchmark

I use the benchmark.js script from node-expat repo and add few more alternatives for comparison.

ltx package is fastest, win by almost 2 (~1.8) order of magnitude compare with the second fastest (@tuananh/sax-parser). However, ltx is not fully compliant with XML spec. I still include ltx here for reference. If ltx works for you, use it.

npm run benchmark

sax x 14,277 ops/sec ±0.73% (87 runs sampled)
@tuananh/sax-parser x 45,779 ops/sec ±0.85% (85 runs sampled)
node-xml x 4,335 ops/sec ±0.51% (86 runs sampled)
node-expat x 13,028 ops/sec ±0.39% (88 runs sampled)
ltx x 81,722 ops/sec ±0.73% (89 runs sampled)
libxmljs x 8,927 ops/sec ±1.02% (88 runs sampled)
Fastest is ltx
moduleops/secnativeXML compliantstream
node-xml4,335
libxmljs8,927
node-expat13,028
sax14,277
@tuananh/sax-parser45,779
ltx81,722

ops/sec: higher is better.

Usage

  • See example/print.js for an example how to use this library to pretty print XML to process.stdout.
  • Or example/stream.js for an example of using this library with stream.
  • For complete API documentation, see API.md.

Sample usage

const fs = require('fs')
const path = require('path')
const SaxParser = require('..')

const parser = new SaxParser()

const readStream = fs.createReadStream(
    path.join(__dirname, '/../benchmark/test.xml')
)

readStream
    .pipe(parser)
    .on('startElement', (name, attrs) => {
        console.log('name', name)
    })
    .on('text', (text) => {
        console.log('text', text)
    })
    .on('end', () => {
        console.log('done')
    })

Development

You will need to have all node-gyp's requirements installed.

git clone git@github.com:tuananh/sax-parser.git
cd sax-parser
git submodule init
npm install
npm run build
node example/print.js
npm run test

Credits

1.0.2

4 years ago

1.0.1

4 years ago

1.0.0

4 years ago

0.0.6

4 years ago

0.0.5

4 years ago

0.0.4

4 years ago

0.0.3

4 years ago

0.0.2

4 years ago

0.0.1

4 years ago