python之SAX解析XML文档

XML文档:


War, Thriller
DVD
2003
PG
10
Talk about a US-Japan war


Anime, Science Fiction
DVD
1989
R
8
A schientific fiction


Anime, Action
DVD
4
PG
10
Vash the Stampede!


Comedy
VHS
PG
2
Viewable boredom

代码示例:
import xml.sax

class MovieHandler(xml.sax.ContentHandler):
def init(self):
self.CurrentData = “”
self.type = “”
self.format = “”
self.year = “”
self.rating = “”
self.stars = “”
self.description = “”

# 元素开始调用
def startElement(self, tag, attributes):
    self.CurrentData = tag
    if tag == "movie":
        print("*****Movie*****")
        title = attributes["title"]
        print("Title:", title)

# 元素结束调用
def endElement(self, tag):
    if self.CurrentData == "type":
        print("Type:", self.type)
    elif self.CurrentData == "format":
        print("Format:", self.format)
    elif self.CurrentData == "year":
        print("Year:", self.year)
    elif self.CurrentData == "rating":
        print("Rating:", self.rating)
    elif self.CurrentData == "stars":
        print("Stars:", self.stars)
    elif self.CurrentData == "description":
        print("Description:", self.description)
    self.CurrentData = ""

读取字符时调用

def characters(self, content):
    if self.CurrentData == "type":
        self.type = content
    elif self.CurrentData == "format":
        self.format = content
    elif self.CurrentData == "year":
        self.year = content
    elif self.CurrentData == "rating":
        self.rating = content
    elif self.CurrentData == "stars":
        self.stars = content
    elif self.CurrentData == "description":
        self.description = content

if (name == “main”):
# 创建一个 XMLReader
parser = xml.sax.make_parser()
# 关闭命名空间
parser.setFeature(xml.sax.handler.feature_namespaces, 0)

# 重写 ContextHandler
Handler = MovieHandler()
parser.setContentHandler(Handler)

parser.parse("movies.xml")
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值