@aequilibrium/xmlr
v0.1.2
Published
A fast XML parser using streams implemented in Typescript.
Downloads
336
Readme
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