A fast XML parser using streams.
npm install node-xml-stream-parser
---
Copy from https://github.com/Steeljuice/node-xml-stream because of inactivity of Project
---
If you need a parser that is more heavy-weight with more functionality I recommend node-sax https://github.com/isaacs/sax-js
All comments are ignored (not emitted). , are also ignored, I haven't found any real need for them yet parsing RSS/ATOM/RDF.
Important notice due some self closing tags do not have an empty space we strip the last / at the end of a tag name. So if your tag is named somthing/ it will not work.
`` npm install --save node-xml-stream `
`
let Parser = require('node-xml-stream');
let fs = require('fs');
let parser = new Parser();
//
parser.on('opentag', (name, attrs) => {
// name = 'tag'
// attrs = { attr: 'hello' }
});
//
//
parser.on('text', text => {
// text = 'TEXT'
});
// <[[CDATA['data']]>
parser.on('cdata', cdata => {
// cdata = 'data'
});
//
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('
// Pipe a stream to the parser
let stream = fs.createReadStream('./feed.atom');
stream.pipe(parser);
`
---
#write(data) - write data to the stream.
#end()- end the stream
#on(event, handler) - Attach an eventhandler
---
All the default stream events for NodeJS streams and the below extra events that are emitted:
opentag - when a tag is opened { name, attributes }
closetag- 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 }