/**
* Makes a DOM node (for the provided document), from an E4X XML tree literal
*/
function e2d(e4x, doc, xmlSettings) {
e2d.parser = e2d.parser || new DOMParser;
var xml = ;
xml.tree = e4x;
if (xmlSettings === undefined) {
var old = XML.settings();
XML.setSettings(xmlSettings || {
ignoreProcessingInstructions:false,
ignoreWhitespace:false,
ignoreComments:false,
prettyPrinting:false, prettyIndent:2
});
}
var dom = e2d.parser.parseFromString(xml.toXMLString(), "text/xml");
old && XML.setSettings(old);
var tree = dom.documentElement.firstChild;
while (tree && tree.nodeType != 1)
tree = tree.nextSibling;
return tree ? (doc || document).importNode( tree, true ) : null;
}
/**
* Ditto, but given whichever XML serialization settings are in effect
*/
function e2d_random( e4x, doc ) {
var xml = ;
xml.tree = e4x;
e4xToDom.parser = e4xToDom.parser || new DOMParser;
var dom = e4xToDom.parser.parseFromString(xml.toXMLString(), "text/xml");
var tree = dom.documentElement.firstChild;
while (tree && tree.nodeType != 1)
tree = tree.nextSibling;
return tree ? (doc || document).importNode( tree, true ) : null;
}
/**
* Makes an E4X node from a given DOM node
*/
function d2e(dom) {
d2e.serializer = d2e.serializer || new XMLSerializer;
return new XML(d2e.serializer.serializeToString(dom));
}