Initial commit
This commit is contained in:
56
node_modules/xmlshim/index.js
generated
vendored
Normal file
56
node_modules/xmlshim/index.js
generated
vendored
Normal file
@@ -0,0 +1,56 @@
|
||||
var jsdom = require("jsdom"),
|
||||
xml = require("libxmljs"),
|
||||
handlersForDocument = require("./domparser.js").handlersForDocument,
|
||||
DOMWriter = require("./domwriter.js").DOMWriter;
|
||||
|
||||
var impl = jsdom.jsdom(undefined, { parsingMode: "xml" }).implementation;
|
||||
|
||||
exports.DOMParser = function() {
|
||||
}
|
||||
|
||||
exports.DOMParser.prototype.parseFromString = function(str, mime) {
|
||||
var doc = impl.createDocument("", "", null);
|
||||
parser = new xml.SaxParser(handlersForDocument(doc));
|
||||
|
||||
parser.parseString(str);
|
||||
return doc;
|
||||
}
|
||||
|
||||
|
||||
exports.XMLSerializer = function() {
|
||||
}
|
||||
|
||||
exports.XMLSerializer.prototype.serializeToString = function(doc) {
|
||||
var textwriter = new xml.TextWriter(),
|
||||
domwriter = new DOMWriter(textwriter),
|
||||
result;
|
||||
|
||||
// libxml xmlTextWriterStartDocument not only writes the document preamble
|
||||
// but also sets up functions used for document encoding. Therefore we
|
||||
// need to call startDocument in any case, also for document fragments and
|
||||
// single nodes. By calling outputMemory immediately after starting the
|
||||
// document, we get rid of the preamble.
|
||||
textwriter.startDocument();
|
||||
textwriter.outputMemory(); // flush buffer and discard preamble
|
||||
|
||||
if (doc.nodeType !== doc.DOCUMENT_NODE) {
|
||||
// Wrap contents into an element in order to force libxml textwriter
|
||||
// into element-mode. This will trigger proper entity escaping for text
|
||||
// nodes.
|
||||
textwriter.startElementNS(undefined, 'dummy');
|
||||
textwriter.writeString(''); // close dummy start-tag
|
||||
textwriter.outputMemory(); // flush buffer
|
||||
}
|
||||
|
||||
domwriter.writeNode(doc); // write actual contents
|
||||
result = textwriter.outputMemory(); // collect results
|
||||
|
||||
// let's play nice and get the textwriter into a proper state again
|
||||
textwriter.endDocument();
|
||||
textwriter.outputMemory(); // flush buffer
|
||||
|
||||
return result;
|
||||
};
|
||||
|
||||
|
||||
exports.implementation = impl;
|
||||
Reference in New Issue
Block a user