MozillaZine

Parsing and serializing XML

From MozillaZine Knowledge Base

(Difference between revisions)
Revision as of 03:06, 10 March 2005
Grimholtz (Talk | contribs)
(initial)
<-- Previous diff
Revision as of 03:10, 10 March 2005
Grimholtz (Talk | contribs)
(changed wording and a link)
Next diff -->
Line 9: Line 9:
==Serializing DOM trees to Strings== ==Serializing DOM trees to Strings==
-First, create an XML document using code [[ How to Create an XML Document| like this]].+First, create a DOM tree using code [[ How to Create a DOM tree| like this]].
Now, let's serialize <code>doc</code> -- the DOM tree -- to a string: Now, let's serialize <code>doc</code> -- the DOM tree -- to a string:
Line 19: Line 19:
==Serializing DOM trees to files== ==Serializing DOM trees to files==
-First, create an XML document using code [[ How to Create an XML Document| like this]].+First, create a DOM tree using code [[ How to Create a DOM tree| like this]].
Now, let's serialize <code>doc</code> -- the DOM tree -- to a file: Now, let's serialize <code>doc</code> -- the DOM tree -- to a file:

Revision as of 03:10, 10 March 2005

Contents

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 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