Parsing and serializing XMLFrom MozillaZine Knowledge Base(Difference between revisions)
Revision as of 03:10, 10 March 2005
Reading and Writing XML to and from DOM treesUntil Mozilla fully supports the W3C's Document Object Model Load and Save, the easiest way to serialize and deserialize DOM trees is to use the following interfaces:
Although nsIDOMParser does have a method named parseFromStream(), it's actually easier to use nsIXMLHttpRequest (yes, it works for local and remote files). 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/local;1"].createInstance(Components.interfaces.nsILocalFile); file.initWithPath("ProfD"); // %Profile% directory file.append("extensions"); // extensions 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(); Deserializing Strings into DOM Treesvar theString="<people><person first-name="eric" middle-initial="h" last-name="jung"><address street="321 south st" city="denver" state="co" country="usa"/><address street="123 main st" city="arlington" state="ma" country="usa"/></person><person first-name="jed" last-name="brown"><address street="321 north st" city="atlanta" state="ga" country="usa"/><address street="123 west st" city="seattle" state="wa" country="usa"/><address street="321 south avenue" city="denver" state="co" country="usa"/></person></people>"; var parser = new DOMParser(); var dom = parser.parseFromString(theString, "text/xml"); Deserializing Files into DOM TreesComing soon |