Parsing and serializing XML

From MozillaZine Knowledge Base
Revision as of 03:28, 10 March 2005 by Grimholtz (talk | contribs) (removed main title)
Jump to navigationJump to search

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:



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 a DOM tree 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 a DOM tree 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