2010-02-14 11 views
7

Ich brauche nur den Text des entsprechenden Tags und behalte es in der Datenbank. Da die XML-Datei groß ist (4,5 GB) verwende ich Sax. Ich benutzte die Zeichen Methode, um den Text zu erhalten und ihn in ein Wörterbuch zu setzen. Allerdings, wenn ich den Text an der Methode endelement Drucken Ich erhalte eine neue Zeile anstelle des Textes.Wie kann ich den Text zwischen den Tags mit Python SAX-Parser bekommen?

Hier ist mein Code:

def characters(self,content): 
    text = unescape(content)) 
    self.map[self.tag]=text 

def startElement(self, name, attrs): 
    self.tag = name 

def endElement (self, name) 
    if (name=="sometag") 
    print self.map[name] 

Vielen Dank im Voraus.

Antwort

6

Der Text im Tag wird von dem SAX-Prozessor gestückelt. characters könnte mehrmals aufgerufen werden.

Sie benötigen, wie etwas zu tun:

def startElement(self, name, attrs): 
    self.map[name] = '' 
    self.tag = name 

def characters(self, content): 
    self.map[self.tag] += content 

def endElement(self, name): 
    print self.map[name] 
+0

Dank! Der folgende Code ist ein Unfall oder sollte es so sein? self.map [name] == ‚‘ – ablimit

+0

Wo kann ich Verweis auf dieses Verhalten finden? Der Text im Tag wird vom SAX-Prozessor gecaptured. Zeichen können mehrmals aufgerufen werden. – ablimit

+0

Sorry, ein Tippfehler. Ich habe die Antwort bearbeitet. self.map [name] = '' – codeape