最新公告
  • 欢迎您光临码农资源网,本站秉承服务宗旨 履行“站长”责任,销售只是起点 服务永无止境!加入我们
  • 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 结构。

    想要了解更多内容,请持续关注码农资源网,一起探索发现编程世界的无限可能!
    本站部分资源来源于网络,仅限用于学习和研究目的,请勿用于其他用途。
    如有侵权请发送邮件至1943759704@qq.com删除

    码农资源网 » Python中xml文件处理
    • 7会员总数(位)
    • 25846资源总数(个)
    • 0本周发布(个)
    • 0 今日发布(个)
    • 293稳定运行(天)

    提供最优质的资源集合

    立即查看 了解详情