Parsing and serializing XMLFrom MozillaZine Knowledge Base(Difference between revisions)
Revision as of 22:26, 10 March 2005Mozilla doesn't support the W3C's Document Object Model Load and Save at this moment, so the easiest way to serialize and deserialize DOM trees is to use the following Mozilla-specific interfaces:
Serializing DOM trees to stringsFirst, create a DOM tree using code like this. Now, let's serialize var serializer = new XMLSerializer(); var xml = serializer.serializeToString(doc); Serializing DOM trees to filesFirst, create a DOM tree using code like this. Now, let's serialize var serializer = new XMLSerializer(); var foStream = Components.classes["@mozilla.org/network/file-output-stream;1"] .createInstance(Components.interfaces.nsIFileOutputStream); var file = Components.classes["@mozilla.org/file/directory_service;1"] .getService(Components.interfaces.nsIProperties) .get("ProfD", Components.interfaces.nsIFile); // get profile folder file.append("extensions"); // extensions sub-directory file.append("{5872365E-67D1-4AFD-9480-FD293BEBD20D}"); // GUID of your extension file.append("myXMLFile.xml"); // filename foStream.init(file, 0x02 | 0x08 | 0x20, 0664, 0); // write, create, truncate serializer.serializeToFile(doc, foStream, "IS0-8859-1"); // rememeber, doc is the DOM tree foStream.close(); Parsing strings into DOM treesvar theString='<a id="a"><b id="b">hey!</b></a>'; var parser = new DOMParser(); var dom = parser.parseFromString(theString, "text/xml"); // print the name of the root element dump(dom.documentElement.nodeName); Parsing files into DOM treesAs was previously mentioned, even though First, read the local or remote XML file into a string: var req = new XMLHttpRequest(); req.open("foo-bar!", "chrome://passwdmaker/content/people.xml", false); req.send(null); The Now that we have the XML as a string (in var parser = new DOMParser(); var dom = parser.parseFromString(req.responseText, "text/xml"); // print the name of the root element dump(dom.documentElement.nodeName); |