国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 編程 > Python > 正文

Python3基于sax解析xml操作示例

2020-02-23 00:11:18
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

本文實(shí)例講述了Python3基于sax解析xml操作。分享給大家供大家參考,具體如下:

python使用SAX解析xml

SAX是一種基于事件驅(qū)動(dòng)的API。

利用SAX解析XML文檔牽涉到兩個(gè)部分:解析器和事件處理器。

解析器負(fù)責(zé)讀取XML文檔,并向事件處理器發(fā)送事件,如元素開始跟元素結(jié)束事件;

而事件處理器則負(fù)責(zé)對(duì)事件作出相應(yīng),對(duì)傳遞的XML數(shù)據(jù)進(jìn)行處理。

1、對(duì)大型文件進(jìn)行處理;
2、只需要文件的部分內(nèi)容,或者只需從文件中得到特定信息。
3、想建立自己的對(duì)象模型的時(shí)候。

在python中使用sax方式處理xml要先引入xml.sax中的parse函數(shù),還有xml.sax.handler中的ContentHandler。

saxDemo.py

# -*- coding:utf-8 -*-#!/usr/bin/python3import xml.saxclass MovieHandler( xml.sax.ContentHandler ):  def __init__(self):    self.CurrentData = ""    self.type = ""    self.format = ""    self.year = ""    self.rating = ""    self.stars = ""    self.description = ""  # 元素開始調(diào)用  def startElement(self, tag, attributes):    self.CurrentData = tag    if tag == "movie":      print ("*****Movie*****")      title = attributes["title"]      print ("Title:", title)  # 元素結(jié)束調(diào)用  def endElement(self, tag):    if self.CurrentData == "type":      print ("Type:", self.type)    elif self.CurrentData == "format":      print ("Format:", self.format)    elif self.CurrentData == "year":      print ("Year:", self.year)    elif self.CurrentData == "rating":      print ("Rating:", self.rating)    elif self.CurrentData == "stars":      print ("Stars:", self.stars)    elif self.CurrentData == "description":      print ("Description:", self.description)    self.CurrentData = ""  # 讀取字符時(shí)調(diào)用  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 = contentif ( __name__ == "__main__"):  # 創(chuàng)建一個(gè) XMLReader  parser = xml.sax.make_parser()  # turn off namepsaces  parser.setFeature(xml.sax.handler.feature_namespaces, 0)  # 重寫 ContextHandler  Handler = MovieHandler()  parser.setContentHandler( Handler )  parser.parse("movies.xml")

執(zhí)行結(jié)果

*****Movie*****
Title: Enemy Behind
Type: love中國(guó)
Format: DVD
Year: 2003
Rating: PG
Stars: 10
Description: Talk about a US-Japan war
*****Movie*****
Title: Transformers
Type: Anime, Science Fiction
Format: DVD
Year: 1989
Rating: R
Stars: 8
Description: A schientific fiction

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 江口县| 平湖市| 高雄县| 闸北区| 仪陇县| 青浦区| 平南县| 普兰店市| 阜平县| 友谊县| 淅川县| 西畴县| 四子王旗| 开封市| 正宁县| 屯昌县| 梁河县| 黄冈市| 双桥区| 湘潭市| 莱阳市| 三河市| 剑川县| 革吉县| 南昌市| 思茅市| 永仁县| 勐海县| 康马县| 家居| 江山市| 义马市| 通州区| 长岭县| 绍兴市| 毕节市| 南充市| 师宗县| 海南省| 慈利县| 定日县|