sax解析(python)

import xml.sax


class XmlParser(xml.sax.ContentHandler):

    def __init__(self):
        self.type=""
        self.format=""
        self.year=""
        self.rating=""
        self.stars=""
        self.description=""

        # 选取节点
    def startElement(self, name, attrs):
        self.curentData = name
        if name=="movie":
            title=attrs["title"]
            print(title)

        # 解析节点元素
    def endElement(self, name):
        if self.curentData=="type":
            print("type:",self.type)
        if self.curentData=="format":
            print("format:",self.format)
        if self.curentData == "year":
            print("year:", self.year)
        if self.curentData=="rating":
            print("rating:",self.rating)
        if self.curentData=="stars":
            print("stars:",self.stars)
        if self.curentData=="description":
            print("description:",self.description)
        self.curentData=""

        # 解析元素内容
    def characters(self, content):
        if self.curentData=="type":
            self.type=content
        if self.curentData=="format":
            self.format=content
        if self.curentData=="year":
            self.year=content
        if self.curentData=="rating":
            self.rating=content
        if self.curentData=="stars":
            self.stars=content
        if self.curentData=="description":
            self.description=content

if __name__=="__main__":
    #创建解析器
    parser=xml.sax.make_parser()
    handler=XmlParser()#处理器
    parser.setContentHandler(handler)#设置处理器
    parser.parse("movies.xml")

 

 

 

#原文档

<?xml version="1.0" encoding="UTF-8"?>
<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>
   <year>2001</year>
   <rating>PG</rating>
   <stars>10</stars>
   <description>Vash the Stampede!</description>
</movie>

<movie title="Ishtar">
   <type>Comedy</type>
   <format>VHS</format>
   <year>2002</year>
   <rating>PG</rating>
   <stars>2</stars>
   <description>Viewable boredom</description>
</movie>

</collection>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值