One nice thing about the briskly-moving 4Suite documentation project is that it is shining a clear light on places where we need to make the APIs more versatile. Adding convenience parse functions was one earlier result.
Saxlette has the ability to walk a Domlette tree, firing off events to a
handler as if from a source document parse. This ability used to be too
well, hidden, though, and I made an API addition to make it more readily
available. This is the new
Ft.Xml.Domlette.SaxWalker. The following
example should show how easy it is to use:
from Ft.Xml.Domlette import SaxWalker from Ft.Xml import Parse XML = "" class element_counter: def startDocument(self): self.ecount = 0 def startElementNS(self, name, qname, attribs): self.ecount += 1 #First get a Domlette document node doc = Parse(XML) #Then SAX "parse" it parser = SaxWalker(doc) handler = element_counter() parser.setContentHandler(handler) #You can set any properties or features, or do whatever #you would to a regular SAX2 parser instance here parser.parse() #called without any argument print "Elements counted:", handler.ecount
Again Saxlette and Domlette are fully implemented in C, so you get great performance from the SaxWalker.