From MozillaZine Knowledge Base
(Difference between revisions)
Revision as of 03:10, 10 March 2005 Grimholtz (Talk | contribs) <-- Previous diff |
Revision as of 03:28, 10 March 2005 Grimholtz (Talk | contribs) Next diff --> |
Line 1: |
Line 1: |
- | =Reading and Writing XML to and from DOM trees= | |
| Until Mozilla fully supports the W3C's [http://www.w3.org/TR/DOM-Level-3-LS/load-save.html Document Object Model Load and Save], the easiest way to serialize and deserialize DOM trees is to use the following interfaces: | | Until Mozilla fully supports the W3C's [http://www.w3.org/TR/DOM-Level-3-LS/load-save.html Document Object Model Load and Save], the easiest way to serialize and deserialize DOM trees is to use the following interfaces: |
| + | |
| | | |
| *[http://unstable.elemental.com/mozilla/build/latest/mozilla/extensions/dox/interfacensIDOMSerializer.html nsIDOMSerializer] to serialize '''DOM trees to strings or to files''' | | *[http://unstable.elemental.com/mozilla/build/latest/mozilla/extensions/dox/interfacensIDOMSerializer.html nsIDOMSerializer] to serialize '''DOM trees to strings or to files''' |
| *[http://unstable.elemental.com/mozilla/build/latest/mozilla/extensions/dox/interfacensIDOMParser.html nsIDOMParser] to deserialize XML from '''strings into DOM trees''' | | *[http://unstable.elemental.com/mozilla/build/latest/mozilla/extensions/dox/interfacensIDOMParser.html nsIDOMParser] to deserialize XML from '''strings into DOM trees''' |
| *[http://unstable.elemental.com/mozilla/build/latest/mozilla/extensions/dox/interfacensIXMLHttpRequest.html nsIXMLHttpRequest] to deserialize XML from '''files into DOM trees''' | | *[http://unstable.elemental.com/mozilla/build/latest/mozilla/extensions/dox/interfacensIXMLHttpRequest.html nsIXMLHttpRequest] to deserialize XML from '''files into DOM trees''' |
| + | |
| | | |
| Although [http://unstable.elemental.com/mozilla/build/latest/mozilla/extensions/dox/interfacensIDOMParser.html nsIDOMParser] does have a method named [http://unstable.elemental.com/mozilla/build/latest/mozilla/extensions/dox/interfacensIDOMParser.html#a1 parseFromStream()], it's actually easier to use [http://unstable.elemental.com/mozilla/build/latest/mozilla/extensions/dox/interfacensIXMLHttpRequest.html nsIXMLHttpRequest] (yes, it works for local '''and''' remote files). | | Although [http://unstable.elemental.com/mozilla/build/latest/mozilla/extensions/dox/interfacensIDOMParser.html nsIDOMParser] does have a method named [http://unstable.elemental.com/mozilla/build/latest/mozilla/extensions/dox/interfacensIDOMParser.html#a1 parseFromStream()], it's actually easier to use [http://unstable.elemental.com/mozilla/build/latest/mozilla/extensions/dox/interfacensIXMLHttpRequest.html nsIXMLHttpRequest] (yes, it works for local '''and''' remote files). |
Revision as of 03:28, 10 March 2005
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