parsen einer xml datei mit SAX [problem]
Verfasst: Freitag 25. Juni 2004, 15:11
Hi,
ich habe mich jetzt mal versucht in SAX einzuarbeiten.
Nun versuchte ich eine art telefonliste zu parsen.
Also hier der python code:
die xml datei:
aber wenn ich das nun so starte bekomme ich folgende ausgabe:
Habe ich einen fehler im setzen der flags oder was?
ich habe mich jetzt mal versucht in SAX einzuarbeiten.
Nun versuchte ich eine art telefonliste zu parsen.
Also hier der python code:
Code: Alles auswählen
#! /usr/bin/python
from xml.sax import ContentHandler
import xml.sax
class phoneHandler(ContentHandler):
def __init__(self):
self.number = ""
self.town = ""
self.name = ""
self.mapping = {}
self.isTown = 0
self.isNumber = 0
self.index = -1
def startElement(self, name, attributes):
if name == "pupil":
self.name = attributes["name"]
elif name == "number":
self.isNumber=1
self.number =""
elif name == "town":
self.isTown=1
self.town = ""
def characters(self, data):
if self.isNumber:
self.number+= data
if self.isTown:
self.town += data
def endElement(self,name):
#if self.index == 0:
self.index += 1
if name == "number":
self.isNumber = 0
elif name == "town":
self.isTown = 0
self.mapping[self.index] = self.name
parser =xml.sax.make_parser()
handler = phoneHandler()
parser.setContentHandler(handler)
parser.parse("test.xml")
for i in range (len(handler.mapping)):
print handler.mapping[i]
Code: Alles auswählen
<phonelist>
<pupil name="Daniel Martin">
<number>05603/6512</number>
<town>WO anders als ihr</town>
</pupil>
<pupil name="Hans-Peter, Olm">
<number>05624/8441</number>
<town>Bad Emstal Sand</town>
</pupil>
<pupil name="Dooofy, Range">
<number>05624/1340</number>
<town>Bad Emstal Sand</town>
</pupil>
</phonelist>
Code: Alles auswählen
Daniel Martin
Daniel Martin
Daniel Martin
Hans-Peter, Olm
Hans-Peter, Olm
Hans-Peter, Olm
Dooofy, Range
Dooofy, Range
Dooofy, Range
Dooofy, Range