使用xml.sax 读取xml 文件

使用 xml.sax 模块可以方便地读取 XML 文件。下面是一个简单的示例代码:

import xml.sax

class MyHandler(xml.sax.ContentHandler):
    def __init__(self):
        self.current_element = ""
        self.data = ""
        
    def startElement(self, name, attrs):
        self.current_element = name
        
    def endElement(self, name):
        if self.current_element == "title":
            print("Title: " + self.data)
        elif self.current_element == "author":
            print("Author: " + self.data)
        elif self.current_element == "year":
            print("Year: " + self.data)
        
        self.current_element = ""
        self.data = ""
        
    def characters(self, content):
        self.data += content

if __name__ == "__main__":
    # 创建 XMLReader 对象
    parser = xml.sax.make_parser()

    # 关闭命名空间
    parser.setFeature(xml.sax.handler.feature_namespaces, 0)

    # 设置 ContentHandler
    handler = MyHandler()
    parser.setContentHandler(handler)

    # 解析 XML 文件
    parser.parse("example.xml")

在上面的示例代码中,我们首先定义了一个 MyHandler 类,该类继承自 xml.sax.ContentHandler 类,并实现了 startElement()endElement()characters() 方法。这些方法会在 SAX 解析器解析 XML 文件时被调用。

startElement() 方法中,我们记录当前元素的名称。在 endElement() 方法中,我们根据当前元素的名称来打印元素的值。在 characters() 方法中,我们记录元素的值。

在主程序中,我们首先创建了一个 XMLReader 对象,并设置了 ContentHandler。然后,我们调用 parse() 方法来解析 XML 文件。解析过程中,SAX 解析器会自动调用 MyHandler 类中的方法来处理 XML 文件中的元素。最终,我们会得到 XML 文件中所有元素的值。

需要注意的是,由于 SAX 解析器是基于事件的,所以它可以处理任意大的 XML 文件,而不需要将整个文件加载到内存中。这使得 SAX 解析器成为处理大型 XML 文件的首选方法。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值