本文实例讲述了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