Parsing and serializing XML
From MozillaZine Knowledge Base
Reading and Writing XML to and from DOM trees
Until 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:
- nsIDOMSerializer to serialize DOM trees to strings or to files
- nsIDOMParser to deserialize XML from strings into DOM trees
- nsIXMLHttpRequest to deserialize XML from files into DOM trees
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 Strings
First, create an XML document using code like this.
Now, let's serialize doc
-- the DOM tree -- to a string:
var serializer = new XMLSerializer(); var xml = serializer.serializeToString(doc);
Serializing DOM trees to files
First, create an XML document using code like this.
Now, let's serialize doc
-- the DOM tree -- to a file:
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 Trees
var 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 Trees
Coming soon