Hi Henning,


def startElement(self, name, attrs):
    self._queue.append(name) # keep the order of processed tags
    handler = str('_start_'+name)
    if hasattr(self, handler):
        self.__class__.__dict__[handler](self, attrs)

Is there a better syntax for self.__class__.__dict__[handler]?


how about:

handler = getattr(self, str('_start_'+name),None) # fetch the actual bound method
if handler is not None:
handler( attrs )


or something like that? I'm not sure why you're using the __class__.__dict__ attributes in the first place, so maybe what I suggest can't work.


And where should the "output" go to?
All examples use print statements in the element handlers.
I wrote those get... methods - but I guess they don't belong in the XML handler, but perhaps in the parser or somewhere else.
It works, but I don't think it's good design.

I've not uesd the sax stuff myself.. but I'd say you can either save it in the handler, as you're doing, or pass some kind structure/object to the handler's constructor that it will use to save away the content it finds.


good luck!
-steve


def getPages(self):
    return self.pages.getSortedArray()

def getPage(self, no):
    return self.pages[no]

parser = xml.sax.make_parser()
parser.setFeature(xml.sax.handler.feature_namespaces, 0)
pxh = MyHandler()
parser.setContentHandler(pxh)
parser.parse(dateiname)
for p in pxh.getPages(): ...

I should ask the last question on the twisted ML, I guess:

Further, if I'd like to use it in a twisted driven asynchronous app,
would I let the parser run in a thread? (Or how can I make
the parser non-blocking?)

Best regards, Henning Hraban Ramm Südkurier Medienhaus / MediaPro Support/Admin/Development Dept. _______________________________________________ Pythonmac-SIG maillist - Pythonmac-SIG@python.org http://mail.python.org/mailman/listinfo/pythonmac-sig


_______________________________________________ Pythonmac-SIG maillist - Pythonmac-SIG@python.org http://mail.python.org/mailman/listinfo/pythonmac-sig

Reply via email to