Parsing and serializing XML

From MozillaZine Knowledge Base

(Difference between revisions)

Revision as of 03:06, 10 March 2005


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:

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[";1"].createInstance(Components.interfaces.nsIFileOutputStream);
var file = Components.classes[";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

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