#readXML.py
# 代码来源http://www.runoob.com/python3/python3-xml-processing.html
import xml.sax class MovieHandler(xml.sax.ContentHandler): def __init__(self): self.type = "" self.format = "" self.year = "" self.rating = "" self.stars = "" self.description = "" def startElement(self, tag, attributes): self.ReadData = tag if tag == "movie": print("=====Movie=====") title = attributes["title"] print("Title: ", title) def endElement(self, tag): if self.ReadData == "type": print("Type: ", self.type) elif self.ReadData == "format": print("Format: ",self.format) elif self.ReadData == "year": print("Year: ", self.year) elif self.ReadData == "rating": print("Rating: ", self.rating) elif self.ReadData == "stars": print("Stars: ", self.stars) elif self.ReadData == "description": print("Description: ", self.description) self.ReadData = "" def characters(self, Data): if self.ReadData == "type": self.type = Data elif self.ReadData == "format": self.format = Data elif self.ReadData == "year": self.year = Data elif self.ReadData == "rating": self.rating = Data elif self.ReadData == "stars": self.stars = Data elif self.ReadData == "description": self.description = Data if (__name__ == "__main__"): parser = xml.sax.make_parser() parser.setFeature(xml.sax.handler.feature_namespaces,0) Handler = MovieHandler() parser.setContentHandler(Handler) parser.parse("movies.xml")
# movies.xml
<collection shelf="New Arrivals"> <movie title="Enemy Behind"> <type>War, Thriller</type> <format>DVD</format> <year>2003</year> <rating>PG</rating> <stars>10</stars> <description>Talk about a US-Japan war</description> </movie> <movie title="Transformers"> <type>Anime, Science Fiction</type> <format>DVD</format> <year>1989</year> <rating>R</rating> <stars>8</stars> <description>A schientific fiction</description> </movie> <movie title="Trigun"> <type>Anime, Action</type> <format>DVD</format> <episodes>4</episodes> <rating>PG</rating> <stars>10</stars> <description>Vash the Stampede!</description> </movie> <movie title="Ishtar"> <type>Comedy</type> <format>VHS</format> <rating>PG</rating> <stars>2</stars> <description>Viewable boredom</description> </movie> </collection>