Skip to content
/ xmlr Public
forked from madebyjeffrey/xmlr

An easy to use xml/html parser for NodeJS using streams.

Notifications You must be signed in to change notification settings

aeq/xmlr

 
 

Repository files navigation

xmlr

Motivation

Looking for a Typescript, well documented XML Stream Parser, with few dependencies that can run in AWS Lambda


Summary

  • A tiny simple and fast XML/HTML stream parser with an easy-to-use interface (using NodeJS streams)

Installation

Install via NPM using command:

npm install --save @aequilibrium/xmlr

Usage

let Parser = require('@aequilibrium/xmlr');
let fs = require('fs');

let parser = new Parser();

// <tag attr="hello">
parser.on('startElement', (name, attrs) => {
 // name = 'tag'
 // attrs = { attr: 'hello' }
});

// </tag>
parser.on('endElement', name => {
 // name = 'tag'
}

// <tag>TEXT</tag>
parser.on('text', text => {
 // text = 'TEXT'
});

// <[[CDATA['data']]>
parser.on('cdata', cdata => {
 // cdata = 'data'
});

// <?xml version="1.0"?>
parser.on('instruction', (name, attrs) => {
 // name = 'xml'
    // attrs = { version: '1.0' }
});

// Only stream-errors are emitted.
parser.on('error', err => {
 // Handle a parsing error
});

parser.on('finish', () => {
 // Stream is completed
});

// Write data to the stream.
parser.write('<root>TEXT</root>');

// Pipe a stream to the parser
let stream = fs.createReadStream('./feed.atom');
stream.pipe(parser);


Methods

#write(data) - write data to the stream.

#end()- end the stream

#on(event, handler) - Attach an eventhandler


Events

All the default stream events for NodeJS streams and the below extra events that are emitted:

startElement - when a tag is opened { name, attributes }

endElement- When a tag is closed { name }

text - when text is retrieved { text }

cdata - when CDATA is read. { text }

instruction - When instruction is available { name, attributes }

License

MIT

About

An easy to use xml/html parser for NodeJS using streams.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • TypeScript 100.0%