《老鸟python 系列》视频上线了,全网稀缺资源,涵盖python人工智能教程,爬虫教程,web教程,数据分析教程以及界面库和服务器教程,以及各个方向的主流实用项目,手把手带你从零开始进阶高手之路!点击 链接 查看详情




xml

阅读:227567795    分享到

xml 比 json 复杂,在 web 中的应用越来越少,有些地方也会用到,我们有必要了解一下 xml。解析 xml 有两种方法:dom 和 sax。dom 会把整个 xml 读入内存,因此占用内存大,解析慢;sax 是流模式,边读边解析,占用内存小,解析快。我们本节就学习如何用 sax 来解析 xml。

使用 sax 解析器解析 xml

我们使用 sax 解析 xml 文件,我们只需要写一个类继承 sax 模块的 ContentHandler 类即可,我们可以通过重写父类的函数,定制自己的方案。

ContentHandler 类即可,我们可以通过重写父类的函数,定制自己的方案。

from xml import sax

class MyHandler(sax.ContentHandler):       # 定义自己的 handler 类,继承 sax.ContentHandler
    def __init__(self):
        sax.ContentHandler.__init__(self)  # 父类和子类都需要初始化(做一些变量的赋值操作等)
        self._content = ""
        self._tag = ""

    def startElement(self, name, attrs):   # 遇到 <tag> 标签时候会执行的方法,这里的 name,attrs 不用自己传值的(这里其实是重写)
        self._tag = name
        if name == "birdpython":
            print("=========birdpython.com=========")
        if self._tag == "book":
            print("BOOK: " + attrs["category"])
            print("--------------------------")

    def endElement(self, name):             # 遇到</tag>执行的方法,name 不用自己传值(重写)
        if name == "birdpython":
            print("=========birdpython.com=========")
        elif name == "title":
            print("Title: " + self._content)
        elif name == "author":
            print("Author: " + self._content)
        elif name == "year":
            print("Year: " + self._content)
        elif name == "price":
            print("Price: " + self._content)
        else:
            pass

    def characters(self, content):  # 获取标签内容
        self._content = content

xml = '''
<birdpython>
    <book category="python教程">
        <title>老鸟python</title>
        <author>孤独的高手</author>
        <year>2019</year>
        <price>免费</price>
    </book>
    <book category="人工智能教程">
        <title>老鸟python视频</title>
        <author>孤独的高手</author>
        <year>2019</year>
        <price>微信打赏赠送</price>
    </book>
</birdpython>
'''
handler = MyHandler()          # 自定义类实例化成对象
sax.parseString(xml, handler)  # 解析xml文件

现在我们一般使用 json 替代了 xml,关于 xml 结构和解析的东西,我们本节课不在赘述。

本节重要知识点

会使用 xml 中的 sax 模块。

了解一下 xml 结构。

作业

本节课不做要求。


如果以上内容对您有帮助,请老板用微信扫一下赞赏码,赞赏后加微信号 birdpython 领取免费视频。


登录后评论

user_image
lookas2001
2020年7月15日 11:38 回复

爬虫的时候,能用到


user_image
1不2
2019年11月24日 17:36 回复

嗯嗯,这章学起来很实用


user_image
黄玄
2019年7月7日 10:55 回复

打卡第29天


user_image
Angus
2019年1月24日 19:40 回复

给自己加油,坚持下去