python处理各种xml文件

Python使用sax模块解析XML文件示例

本文实例讲述了Python使用sax模块解析XML文件。分享给大家供大家参考,具体如下:

XML样例:

  • ?
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • <?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解析代码展示:

  • ?
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 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/在线压缩XMLhttps://tool.zzvips.com/t/xml/

    希望本文所述对大家Python程序设计有所帮助。

    原文链接:https://www.cnblogs.com/wcwnina/p/7233386.html

    标签: