[XML-SIG] Switching back and forward between SAX and DOM
Uche Ogbuji
uche.ogbuji@fourthought.com
Thu, 06 Jun 2002 08:35:57 -0600
> Eric van der Vlist <vdv@dyomedea.com> writes:
>
> > How can you get a DOM tree out of SAX events (if for instance you've
> > developed a ContentHandler, can you retrieve a part of the document as
> > a DOM tree by forwarding the events to a DOM parser?)
>
> Depends on whether you have PyXML, or only Python proper. With
> minidom, there is xml.dom.ext.reader.Sax2, which takes a SAX parser;
> for PyXML, xml.dom.minidom.parse does the same thing. Notice that, in
> both cases, you need to pass an XMLReader. For minidom, the content
> handler that will build the DOM tree is xml.dom.pulldom.SAX2DOM
> (unless you need the pulldom functionality itself); for 4DOM, it
> is xml.dom.ext.reader.Sax2.XmlDomGenerator.
>
> > how can I serialize a DOM tree as SAX events which can be processed
> > by a ContentHandler?
>
> For PyXML, xml.dom.ext.Dom2Sax does that. In standard Python, that
> functionality is not available.
>
> Notice that you will have to experiment, and might find bugs, since
> that functionality is rarely used.
Well, I should have known Martin would have it all offhead :-).
It is pretty much as I'd thought. I don't recommend that Eric switch to 4DOM.
Not only has he already survived one traumatic switch, but it is a great step
backward, not least because 4DOM is excruciatingly slow.
I'll look to updating xml.dom.ext.reader.Sax2.XmlDomGenerator and
xml.dom.ext.Dom2Sax to general-purpose utilities for both PyXML and 4Suite
domlettes. Should go pretty quickly if I end up in enough boring sessions
here at XML One :-)
--
Uche Ogbuji Fourthought, Inc.
http://uche.ogbuji.net http://4Suite.org http://fourthought.com
Track chair, XML/Web Services One (San Jose, Boston):
http://www.xmlconference.com/
DAML Reference - http://www.xml.com/pub/a/2002/05/01/damlref.html
The Languages of the Semantic Web - http://www.newarchitectmag.com/documents/s=
2453/new1020218556549/index.html
XML, The Model Driven Architecture, and RDF @ XML Europe -
http://www.xmleurope.com/2002/kttrack.asp#themodel