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

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

Python3基于sax解析xml操作示例

2020-01-04 15:00:55
字體:
供稿:網(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*****")      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

運(yùn)行結(jié)果如下圖所示:

Python3,sax,解析xml

movies.xml內(nèi)容:

<?xml version="1.0" encoding="utf-8"?><collection shelf="New Arrivals"><movie  <type>love中國(guó)</type>  <format>DVD</format>  <year>2003</year>  <rating>PG</rating>  <stars>10</stars>  <description>Talk about a US-Japan war</description></movie><movie  <type>Anime, Science Fiction</type>  <format>DVD</format>  <year>1989</year>  <rating>R</rating>  <stars>8</stars>  <description>A schientific fiction</description></movie></collection>

 

希望本文所述對(duì)大家Python程序設(shè)計(jì)有所幫助。


注:相關(guān)教程知識(shí)閱讀請(qǐng)移步到python教程頻道。
發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 江达县| 苏尼特左旗| 英超| 靖远县| 兴山县| 青海省| 辽宁省| 板桥市| 宁化县| 柳江县| 溆浦县| 永清县| 高安市| 牙克石市| 通辽市| 铁力市| 宕昌县| 嘉荫县| 海宁市| 堆龙德庆县| 本溪市| 紫云| 武宣县| 阿荣旗| 甘南县| 奎屯市| 楚雄市| 桦南县| 宣武区| 嘉义市| 茂名市| 林西县| 会宁县| 理塘县| 武穴市| 奉节县| 南昌市| 鄂托克旗| 故城县| 大新县| 惠州市|