python使用expat解析xml
python有一些内建的xml解析库,本文介绍python中的expat库
expat的特点之一就是支持动态解析xml。何为动态?就是某个xml串并不需要全部输入给expat,哪怕只是一部分,expat也能感应到响应的事件。事件?比如检测到新元素出现(实质上是expat遇到了‘<’),或者检测到某个元素处理完毕(遇到了‘/>’)。所以——expat不一定需要完整的xml就能工作。
看程序
1 import xml.parsers.expat 2 3 class ExParser(object): 4 '''Parse roster xml''' 5 def __init__(self, xml_raw): 6 '''init parser and setup handlers''' 7 self.parser = xml.parsers.expat.ParserCreate() 8 9 #connect handlers 10 self.parser.StartElementHandler = self.start_element 11 self.parser.EndElementHandler = self.end_element 12 self.parser.CharacterDataHandler = self.char_data 13 self.parser.Parse(xml_raw) 14 del(xml_raw) 15 16 def start_element(self, name, attrs): 17 '''Start xml element handler''' 18 print 'start:'+name 19 20 def end_element(self, name): 21 '''End xml element handler''' 22 print 'end:'+name 23 24 def char_data(self, data): 25 '''Char xml element handler''' 26 print 'data is '+data
啊分析:
7行 ExParser的构造中定义了一个expat解析器
10-12行 为解析器设置感兴趣的回调函数
13行 开始解析我们的xml
然后就是等待expat解析,一旦expat解析器遇到xml的 元素开始,元素结束,元素值 事件时,会回分别调用start_element, end_element, char_data函数
16行 参数name,attrs 分别代表节点名称,节点属性(字典)
20行 参数name代表节点名称
24行 参数data代表节点数据
拿到这些值后,能做什么都可以了。
尤其当我们遇到大块xml数据的时候,可以利用expat动态解析这一点来分块解析一个大块。
己有能 勿自私 人所能 勿轻訾
jogger0703@gmail.com
【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 软件产品开发中常见的10个问题及处理方法
· .NET 原生驾驭 AI 新基建实战系列:向量数据库的应用与畅想
· 从问题排查到源码分析:ActiveMQ消费端频繁日志刷屏的秘密
· 一次Java后端服务间歇性响应慢的问题排查记录
· dotnet 源代码生成器分析器入门
· 互联网不景气了那就玩玩嵌入式吧,用纯.NET开发并制作一个智能桌面机器人(四):结合BotSharp
· 软件产品开发中常见的10个问题及处理方法
· Vite CVE-2025-30208 安全漏洞
· 《HelloGitHub》第 108 期
· MQ 如何保证数据一致性?