本文实例讲述了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/在线压缩XML:https://tool.zzvips.com/t/xml/
希望本文所述对大家Python程序设计有所帮助。
原文链接:https://www.cnblogs.com/wcwnina/p/7233386.html