44 lines
880 B
JavaScript
44 lines
880 B
JavaScript
'use strict';
|
|
|
|
var events = require('events');
|
|
var saxes = require('saxes');
|
|
|
|
class SaxSaxesjs extends events.EventEmitter {
|
|
constructor() {
|
|
super();
|
|
this.parser = new saxes.SaxesParser({ fragment: true });
|
|
|
|
this.parser.on("opentag", (a) => {
|
|
this.emit("startElement", a.name, a.attributes);
|
|
});
|
|
this.parser.on("closetag", (el) => {
|
|
this.emit("endElement", el.name);
|
|
});
|
|
this.parser.on("text", (str) => {
|
|
this.emit("text", str);
|
|
});
|
|
this.parser.on("end", () => {
|
|
this.emit("end");
|
|
});
|
|
this.parser.on("error", (e) => {
|
|
this.emit("error", e);
|
|
});
|
|
}
|
|
|
|
write(data) {
|
|
if (typeof data !== "string") {
|
|
data = data.toString();
|
|
}
|
|
this.parser.write(data);
|
|
}
|
|
|
|
end(data) {
|
|
if (data) {
|
|
this.parser.write(data);
|
|
}
|
|
this.parser.close();
|
|
}
|
|
}
|
|
|
|
module.exports = SaxSaxesjs;
|