xml2o
Version:
Helps you convert XML into an object for easy reading.
37 lines • 1.54 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.Attribute = exports.Node = exports.convertString = exports.convertStream = void 0;
const SAX = require("sax");
const node_1 = require("./node");
Object.defineProperty(exports, "Node", { enumerable: true, get: function () { return node_1.Node; } });
Object.defineProperty(exports, "Attribute", { enumerable: true, get: function () { return node_1.Attribute; } });
function convert(parser, ready) {
let pointer;
parser.on('opentag', node => {
if (!pointer) {
pointer = new node_1.Node(node, null);
}
else {
pointer = node_1.Node.addNode(pointer, node);
}
});
parser.on('closetag', node => pointer.parent ? pointer = pointer.parent : null);
parser.on('text', value => pointer && node_1.Node.pushText(pointer, value));
parser.on('cdata', value => node_1.Node.pushText(pointer, value));
return new Promise((resolve, reject) => {
parser.on('end', () => resolve(pointer));
parser.on('error', error => reject(error));
ready();
});
}
function convertStream(stream) {
const parser = SAX.createStream(true, { xmlns: true });
return convert(parser, () => stream.pipe(parser));
}
exports.convertStream = convertStream;
function convertString(XMLString) {
const parser = SAX.createStream(true, { xmlns: true });
return convert(parser, () => parser.end(XMLString));
}
exports.convertString = convertString;
//# sourceMappingURL=index.js.map