欢迎光临
我们一直在努力

Python中xml文件处理

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>2023</year>
        <price>免费</price>
    </book>
    <book category="人工智能教程">
        <title>python视频</title>
        <author>韩俊</author>
        <year>2023</year>
        <price>微信打赏赠送</price>
    </book>
</birdpython>
'''
handler = MyHandler()          # 自定义类实例化成对象
sax.parseString(xml, handler)  # 解析xml文件

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

本节重要知识点

会使用 xml 中的 sax 模块。

了解一下 xml 结构。

赞(0) 打赏
未经允许不得转载:码农资源网 » Python中xml文件处理
分享到

觉得文章有用就打赏一下文章作者

非常感谢你的打赏,我们将继续提供更多优质内容,让我们一起创建更加美好的网络世界!

支付宝扫一扫打赏

微信扫一扫打赏

登录

找回密码

注册