欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python3基于sax解析xml操作示例

 更新時間:2018年05月22日 10:47:46   作者:愛代碼也愛生活  
這篇文章主要介紹了Python3基于sax解析xml操作,結(jié)合實例形式分析了Python3使用sax解析xml文檔的相關(guān)原理與實現(xiàn)技巧,需要的朋友可以參考下

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

python使用SAX解析xml

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

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

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

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

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

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

saxDemo.py

# -*- coding:utf-8 -*-
#!/usr/bin/python3
import xml.sax
class 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 = ""
  # 讀取字符時調(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 = content
if ( __name__ == "__main__"):
  # 創(chuàng)建一個 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中國
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

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

movies.xml內(nèi)容:

<?xml version="1.0" encoding="utf-8"?>
<collection shelf="New Arrivals">
<movie title="Enemy Behind">
  <type>love中國</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>
</collection>

PS:這里再為大家提供幾款關(guān)于xml操作的在線工具供大家參考使用:

在線XML/JSON互相轉(zhuǎn)換工具:
http://tools.jb51.net/code/xmljson

在線格式化XML/在線壓縮XML
http://tools.jb51.net/code/xmlformat

XML在線壓縮/格式化工具:
http://tools.jb51.net/code/xml_format_compress

XML代碼在線格式化美化工具:
http://tools.jb51.net/code/xmlcodeformat

更多關(guān)于Python相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《Python操作xml數(shù)據(jù)技巧總結(jié)》、《Python數(shù)據(jù)結(jié)構(gòu)與算法教程》、《Python Socket編程技巧總結(jié)》、《Python函數(shù)使用技巧總結(jié)》、《Python字符串操作技巧匯總》、《Python入門與進(jìn)階經(jīng)典教程》及《Python文件與目錄操作技巧匯總

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

相關(guān)文章

  • 詳解將Python程序(.py)轉(zhuǎn)換為Windows可執(zhí)行文件(.exe)

    詳解將Python程序(.py)轉(zhuǎn)換為Windows可執(zhí)行文件(.exe)

    這篇文章主要介紹了詳解將Python程序(.py)轉(zhuǎn)換為Windows可執(zhí)行文件(.exe),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2019-07-07
  • 關(guān)于Tensorflow 模型持久化詳解

    關(guān)于Tensorflow 模型持久化詳解

    今天小編就為大家分享一篇關(guān)于Tensorflow 模型持久化詳解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-02-02
  • 解決Jupyter Notebook開始菜單欄Anaconda下消失的問題

    解決Jupyter Notebook開始菜單欄Anaconda下消失的問題

    這篇文章主要介紹了解決Jupyter Notebook開始菜單欄Anaconda下消失的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-04-04
  • Python繪圖實現(xiàn)坐標(biāo)軸共享與復(fù)用詳解

    Python繪圖實現(xiàn)坐標(biāo)軸共享與復(fù)用詳解

    這篇文章主要為大家詳細(xì)介紹了Python在繪圖時如何實現(xiàn)坐標(biāo)軸共享與復(fù)用,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2024-02-02
  • Python 離線工作環(huán)境搭建的方法步驟

    Python 離線工作環(huán)境搭建的方法步驟

    這篇文章主要介紹了Python 離線工作環(huán)境搭建的方法步驟,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-07-07
  • Django中的FBV和CBV用法詳解

    Django中的FBV和CBV用法詳解

    這篇文章主要介紹了Django中的FBV和CBV用法詳解,本文通過實例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-09-09
  • ZABBIX3.2使用python腳本實現(xiàn)監(jiān)控報表的方法

    ZABBIX3.2使用python腳本實現(xiàn)監(jiān)控報表的方法

    今天小編就為大家分享一篇ZABBIX3.2使用python腳本實現(xiàn)監(jiān)控報表的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-07-07
  • Python 可變類型和不可變類型及引用過程解析

    Python 可變類型和不可變類型及引用過程解析

    這篇文章主要介紹了Python 可變類型和不可變類型,以及其引用,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2019-09-09
  • 淺談Pytorch中的torch.gather函數(shù)的含義

    淺談Pytorch中的torch.gather函數(shù)的含義

    今天小編就為大家分享一篇淺談Pytorch中的torch.gather函數(shù)的含義,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-08-08
  • Python語法概念基礎(chǔ)詳解

    Python語法概念基礎(chǔ)詳解

    這篇文章主要為大家介紹了Python語法概念基礎(chǔ),具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-01-01

最新評論