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