[Python-de] refactoring und xml.parsers.expat

Olaf Radicke olaf_rad at gmx.de
Mon Nov 3 22:55:10 CET 2003


Hi!
Habe mir heute Früh Das Buch von Martin Fowler gekauft.
Mit 49,90 Euro zwar bitter teuer aber super interessant.
Danke noch mal für die Empfehlung!

Habe mich dann auch gleich herangemacht und mein Code sondiert.

Aber ich glaube ich bin auf einen Bug in der xml.parsers.expat
gestoßen. Wenn ich den Parser als Eigenschaft im __init__
instanziere, wirft der Parser eine Ausnahme wenn man ihn
ein zweites mal ruft. Immer soll laut Parser nach dem
letzten Tag in Zeile zwei Spalte 24 Kauderwelsch stehen, auch
wenn der XML-Code nur eine Zeile hat oder 200. Also muss
der Parser bei jedem Methodenaufruf der Klasse neu instanziert
und wieder zerstört werden. 

Der Code in Auszügen:

class XML_Parsing_Class:

    def __init__(self, _answer, _log, _info):
[...]

    def process(self, question):

        # Parser an die Funktionen binden
        # Parser muss leider jedes mal neu instanziert 
	# werden, sonst spinnt er rum.
        self.parser = expat.ParserCreate()
        self.parser.StartElementHandler = self._start
        self.parser.CharacterDataHandler = self._data
        # und parsen
        self.parser.Parse(question)
        del self.parser

        return self.reply
        

    def _start(self, tag, attrs):
[...]
        
        
    def _data(self, data):
[...]
            
        # Variable leeren
        self.last_tag = ""
 
MfG
Olaf
-- 
===================================================
"Meine Meinung steht fest. Bitte verwirren sie mich
nicht mit Tatsachen!"
                          Unbekannt.
===================================================