[Python-de] xml.parsers

Olaf Radicke olaf_rad at gmx.de
Mit Okt 15 09:27:45 CEST 2003


Hi!

Ich frage mich warum mein Skript ein
so merkwürdiges Verhalten an den Tag legt.

Der XML-Parser will angeblich jedes Tag zweimal
gefunden haben (das zweite mal immer leer)

Ich kann mir das nicht erklären. 

...Also es muss irgend wie mit den Umbrüchen
zu tun haben. Ich habe das XML mal direkt in das
Skript geschrieben und die Probleme bleiben
die gleichen. Wenn man die Zeilenumbrüche
aus dem XML entfernt, verschwinden zum Teil
die "Doppel-Auslesungen".

Hier ein Prototyp:


from xml.parsers import expat



class Conf:

    def __init__(self):

        
        # Die Funktionen für den Parser
        def start(tag, attrs):
            self.last_tag = tag
            
        
        def data(data):
            if self.last_tag == "host":
                self.host = data
                print "host gefunden: "
                print self.host
            elif self.last_tag == "port":
                print "port gefunden: "
                self.port = data
            


        # Parser an die Funktionen binden
        parser = expat.ParserCreate()
        parser.StartElementHandler = start
        parser.CharacterDataHandler = data

        
                
        xml_code = """<?xml version=\"1.0\" encoding=\"ISO-8859-1\"?>
<configuration>
<host>host-test</host>
<port>port-test</port><max_clients>test</max_clients>
<max_data_size>test</max_data_size>
<logfile>test</logfile>
        <db_start_line>test</db_start_line>
        <db_stop_line>test</db_stop_line>
        <root_passwd>test</root_passwd>
        </configuration>
        """

        print xml_code
        parser.Parse(xml_code)
                
        del parser



c = Conf()

MfG
Olaf Radicke
-- 
===================================================
"Meine Meinung steht fest. Bitte verwirren sie mich
nicht mit Tatsachen!"
                          Unbekannt.
===================================================