MozillaZine

Parsing and serializing XML

From MozillaZine Knowledge Base

(Difference between revisions)
Revision as of 20:01, 10 March 2005
Asqueella (Talk | contribs)
(update links)
<-- Previous diff
Revision as of 20:28, 10 March 2005
Asqueella (Talk | contribs)
(change links to xulplanet)
Next diff -->
Line 1: Line 1:
Mozilla [https://bugzilla.mozilla.org/show_bug.cgi?id=155749 doesn't support] the W3C's [http://www.w3.org/TR/DOM-Level-3-LS/load-save.html Document Object Model Load and Save] at this moment, so the easiest way to serialize and deserialize DOM trees is to use the following Mozilla-specific interfaces: Mozilla [https://bugzilla.mozilla.org/show_bug.cgi?id=155749 doesn't support] the W3C's [http://www.w3.org/TR/DOM-Level-3-LS/load-save.html Document Object Model Load and Save] at this moment, so the easiest way to serialize and deserialize DOM trees is to use the following Mozilla-specific interfaces:
-*[http://unstable.elemental.com/mozilla/build/latest/mozilla/extensions/dox/interfacensIDOMSerializer.html nsIDOMSerializer] to serialize '''DOM trees to strings or to files'''+*[http://xulplanet.com/references/xpcomref/ifaces/nsIDOMSerializer.html XMLSerializer] to serialize '''DOM trees to strings or to files'''
-*[http://unstable.elemental.com/mozilla/build/latest/mozilla/extensions/dox/interfacensIDOMParser.html nsIDOMParser] to parse XML from '''strings into DOM trees'''+*[http://xulplanet.com/references/objref/DOMParser.html DOMParser] to parse XML from '''strings into DOM trees'''
-*[http://unstable.elemental.com/mozilla/build/latest/mozilla/extensions/dox/interfacensIXMLHttpRequest.html nsIXMLHttpRequest] to parse XML from '''files into DOM trees'''. Although <code>DOMParser</code> does have a method named <code>parseFromStream()</code>, it's actually easier to use [[XMLHttpRequest|XMLHttpRequest]] (yes, it works for local '''and''' remote files).+*[http://xulplanet.com/references/objref/XMLHttpRequest.html XMLHttpRequest] to parse XML from '''files into DOM trees'''. Although <code>DOMParser</code> does have a method named <code>parseFromStream()</code>, it's actually easier to [[XMLHttpRequest|use XMLHttpRequest]] which works for remote '''and''' local files.
- +
==Serializing DOM trees to strings== ==Serializing DOM trees to strings==

Revision as of 20:28, 10 March 2005

Mozilla doesn't support the W3C's Document Object Model Load and Save at this moment, so the easiest way to serialize and deserialize DOM trees is to use the following Mozilla-specific interfaces:

  • XMLSerializer to serialize DOM trees to strings or to files
  • DOMParser to parse XML from strings into DOM trees
  • XMLHttpRequest to parse XML from files into DOM trees. Although DOMParser does have a method named parseFromStream(), it's actually easier to use XMLHttpRequest which works for remote and local files.

Contents

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 (you can read more about using files in Mozilla here):

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/directory_service;1"]
           .getService(Components.interfaces.nsIProperties)
           .get("ProfD", Components.interfaces.nsIFile); // get profile folder
file.append("extensions");   // extensions sub-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();

Parsing strings into DOM trees

var theString='<a id="a"><b id="b">hey!</b></a>';
var parser = new DOMParser();
var dom = parser.parseFromString(theString, "text/xml");

Parsing files into DOM trees

Coming soon