1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556 |
- var util = require('util');
-
- var sax = require('sax');
-
- var TreeBuilder = require('./../treebuilder').TreeBuilder;
-
- function XMLParser(target) {
- this.parser = sax.parser(true);
-
- this.target = (target) ? target : new TreeBuilder();
-
- this.parser.onopentag = this._handleOpenTag.bind(this);
- this.parser.ontext = this._handleText.bind(this);
- this.parser.oncdata = this._handleCdata.bind(this);
- this.parser.ondoctype = this._handleDoctype.bind(this);
- this.parser.oncomment = this._handleComment.bind(this);
- this.parser.onclosetag = this._handleCloseTag.bind(this);
- this.parser.onerror = this._handleError.bind(this);
- }
-
- XMLParser.prototype._handleOpenTag = function(tag) {
- this.target.start(tag.name, tag.attributes);
- };
-
- XMLParser.prototype._handleText = function(text) {
- this.target.data(text);
- };
-
- XMLParser.prototype._handleCdata = function(text) {
- this.target.data(text);
- };
-
- XMLParser.prototype._handleDoctype = function(text) {
- };
-
- XMLParser.prototype._handleComment = function(comment) {
- };
-
- XMLParser.prototype._handleCloseTag = function(tag) {
- this.target.end(tag);
- };
-
- XMLParser.prototype._handleError = function(err) {
- throw err;
- };
-
- XMLParser.prototype.feed = function(chunk) {
- this.parser.write(chunk);
- };
-
- XMLParser.prototype.close = function() {
- this.parser.close();
- return this.target.close();
- };
-
- exports.XMLParser = XMLParser;
|