Python使用sax模块解析XML文件示例
程序员文章站
2022-06-30 10:50:21
本文实例讲述了python使用sax模块解析xml文件。分享给大家供大家参考,具体如下:
xml样例:
本文实例讲述了python使用sax模块解析xml文件。分享给大家供大家参考,具体如下:
xml样例:
<?xml version="1.0"?> <collection shelf="new arrivals"> <movie title="enemy behind"> <type>war, thriller</type> <format>dvd</format> <year>2003</year> <rating>pg</rating> <stars>10</stars> <description>talk about a us-japan war</description> </movie> <movie title="transformers"> <type>anime, science fiction</type> <format>dvd</format> <year>1989</year> <rating>r</rating> <stars>8</stars> <description>a schientific fiction</description> </movie> <movie title="trigun"> <type>anime, action</type> <format>dvd</format> <episodes>4</episodes> <rating>pg</rating> <stars>10</stars> <description>vash the stampede!</description> </movie> <movie title="ishtar"> <type>comedy</type> <format>vhs</format> <rating>pg</rating> <stars>2</stars> <description>viewable boredom</description> </movie> </collection>
sax解析代码展示:
from xml import sax class moviehandler(sax.contenthandler): def __init__(self): # 初始化数据,并增加一个当前数据 self.currentdata = "" self.type = "" self.format = "" self.year = "" self.rating = "" self.stars = "" self.description = "" # 文档启动的时候调用 def startdocument(self): print('xml开始解析中...') # 元素开始事件处理 def startelement(self, name, attrs): self.currentdata=name if self.currentdata=='movie': print('*********movie*********') title=attrs['title'] print('title:{0}'.format(title)) # 内容事件处理 def characters(self, content): if self.currentdata == "type": self.type = content elif self.currentdata == "format": self.format = content elif self.currentdata == "year": self.year = content elif self.currentdata == "rating": self.rating = content elif self.currentdata == "stars": self.stars = content elif self.currentdata == "description": self.description = content # 元素结束事件处理 def endelement(self, name): if self.currentdata=='type': print('type:{0}'.format(self.type)) elif self.currentdata=='format': print('format:{0}'.format(self.format)) elif self.currentdata=='year': print('year:{0}'.format(self.year)) elif self.currentdata == 'rating': print('rating:{0}'.format(self.rating)) elif self.currentdata == 'stars': print('stars:{0}'.format(self.stars)) elif self.currentdata == 'description': print('description:{0}'.format(self.description)) self.currentdata = "" # 文档结束的时候调用 def enddocument(self): print('xml文档解析结束!') if __name__=='__main__': handler=moviehandler() parser = sax.make_parser() # parser.setfeature(sax.handler.feature_namespaces, 0) parser.setcontenthandler(handler) parser.parse("sax_test.xml")
ps:这里再为大家提供几款关于xml操作的在线工具供大家参考使用:
在线xml/json互相转换工具:
在线格式化xml/在线压缩xml:
xml在线压缩/格式化工具:
xml代码在线格式化美化工具:
更多关于python相关内容感兴趣的读者可查看本站专题:《python操作xml数据技巧总结》、《python数据结构与算法教程》、《python socket编程技巧总结》、《python函数使用技巧总结》、《python字符串操作技巧汇总》、《python入门与进阶经典教程》及《python文件与目录操作技巧汇总》
希望本文所述对大家python程序设计有所帮助。
上一篇: php计算程序运行时间的简单例子分享
下一篇: python图像处理入门(一)