日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

Python如何對XML 解析

瀏覽:268日期:2022-07-19 14:13:56

什么是 XML?

XML 指可擴展標記語言(eXtensible Markup Language),標準通用標記語言的子集,是一種用于標記電子文件使其具有結構性的標記語言。 你可以通過本站學習 XML 教程

XML 被設計用來傳輸和存儲數據。

XML 是一套定義語義標記的規則,這些標記將文檔分成許多部件并對這些部件加以標識。

它也是元標記語言,即定義了用于定義其他與特定領域有關的、語義的、結構化的標記語言的句法語言。

Python 對 XML 的解析

常見的 XML 編程接口有 DOM 和 SAX,這兩種接口處理 XML 文件的方式不同,當然使用場合也不同。

Python 有三種方法解析 XML,SAX,DOM,以及 ElementTree:

1.SAX (simple API for XML )

Python 標準庫包含 SAX 解析器,SAX 用事件驅動模型,通過在解析 XML 的過程中觸發一個個的事件并調用用戶定義的回調函數來處理 XML 文件。

2.DOM(Document Object Model)

將 XML 數據在內存中解析成一個樹,通過對樹的操作來操作 XML。

本章節使用到的 XML 實例文件 movies.xml 內容如下:

<collection shelf='New Arrivals'><movie> <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> <type>Anime, Science Fiction</type> <format>DVD</format> <year>1989</year> <rating>R</rating> <stars>8</stars> <description>A schientific fiction</description></movie> <movie> <type>Anime, Action</type> <format>DVD</format> <episodes>4</episodes> <rating>PG</rating> <stars>10</stars> <description>Vash the Stampede!</description></movie><movie> <type>Comedy</type> <format>VHS</format> <rating>PG</rating> <stars>2</stars> <description>Viewable boredom</description></movie></collection>

Python 使用 SAX 解析 xml

SAX 是一種基于事件驅動的API。

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

解析器負責讀取 XML 文檔,并向事件處理器發送事件,如元素開始跟元素結束事件。

而事件處理器則負責對事件作出響應,對傳遞的 XML 數據進行處理。

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

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

ContentHandler 類方法介紹

characters(content) 方法

調用時機:

從行開始,遇到標簽之前,存在字符,content 的值為這些字符串。

從一個標簽,遇到下一個標簽之前, 存在字符,content 的值為這些字符串。

從一個標簽,遇到行結束符之前,存在字符,content 的值為這些字符串。

標簽可以是開始標簽,也可以是結束標簽。

startDocument() 方法

文檔啟動的時候調用。

endDocument() 方法

解析器到達文檔結尾時調用。

startElement(name, attrs) 方法

遇到XML開始標簽時調用,name 是標簽的名字,attrs 是標簽的屬性值字典。

endElement(name) 方法

遇到XML結束標簽時調用。

make_parser 方法

以下方法創建一個新的解析器對象并返回。

xml.sax.make_parser( [parser_list] )

參數說明:

parser_list - 可選參數,解析器列表

parser 方法

以下方法創建一個 SAX 解析器并解析xml文檔:

xml.sax.parse( xmlfile, contenthandler[, errorhandler])

參數說明:

xmlfile - xml文件名 contenthandler - 必須是一個 ContentHandler 的對象 errorhandler - 如果指定該參數,errorhandler 必須是一個 SAX ErrorHandler 對象

parseString 方法

parseString 方法創建一個 XML 解析器并解析 xml 字符串:

xml.sax.parseString(xmlstring, contenthandler[, errorhandler])

參數說明:

xmlstring - xml字符串 contenthandler - 必須是一個 ContentHandler 的對象 errorhandler - 如果指定該參數,errorhandler 必須是一個 SAX ErrorHandler對象

Python 解析XML實例

#!/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 = '' # 元素開始調用 def startElement(self, tag, attributes): self.CurrentData = tag if tag == 'movie': print ('*****Movie*****') title = attributes['title'] print ('Title:', title) # 元素結束調用 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 = '' # 讀取字符時調用 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__'): # 創建一個 XMLReader parser = xml.sax.make_parser() # 關閉命名空間 parser.setFeature(xml.sax.handler.feature_namespaces, 0) # 重寫 ContextHandler Handler = MovieHandler() parser.setContentHandler( Handler ) parser.parse('movies.xml')

以上代碼執行結果如下:

*****Movie*****Title: Enemy BehindType: War, ThrillerFormat: DVDYear: 2003Rating: PGStars: 10Description: Talk about a US-Japan war*****Movie*****Title: TransformersType: Anime, Science FictionFormat: DVDYear: 1989Rating: RStars: 8Description: A schientific fiction*****Movie*****Title: TrigunType: Anime, ActionFormat: DVDRating: PGStars: 10Description: Vash the Stampede!*****Movie*****Title: IshtarType: ComedyFormat: VHSRating: PGStars: 2Description: Viewable boredom

完整的 SAX API 文檔請查閱Python SAX APIs

使用xml.dom解析xml

文件對象模型(Document Object Model,簡稱DOM),是W3C組織推薦的處理可擴展置標語言的標準編程接口。

一個 DOM 的解析器在解析一個 XML 文檔時,一次性讀取整個文檔,把文檔中所有元素保存在內存中的一個樹結構里,之后你可以利用DOM 提供的不同的函數來讀取或修改文檔的內容和結構,也可以把修改過的內容寫入xml文件。

python中用xml.dom.minidom來解析xml文件,實例如下:

#!/usr/bin/python3from xml.dom.minidom import parseimport xml.dom.minidom# 使用minidom解析器打開 XML 文檔DOMTree = xml.dom.minidom.parse('movies.xml')collection = DOMTree.documentElementif collection.hasAttribute('shelf'): print ('Root element : %s' % collection.getAttribute('shelf'))# 在集合中獲取所有電影movies = collection.getElementsByTagName('movie')# 打印每部電影的詳細信息for movie in movies: print ('*****Movie*****') if movie.hasAttribute('title'): print ('Title: %s' % movie.getAttribute('title')) type = movie.getElementsByTagName(’type’)[0] print ('Type: %s' % type.childNodes[0].data) format = movie.getElementsByTagName(’format’)[0] print ('Format: %s' % format.childNodes[0].data) rating = movie.getElementsByTagName(’rating’)[0] print ('Rating: %s' % rating.childNodes[0].data) description = movie.getElementsByTagName(’description’)[0] print ('Description: %s' % description.childNodes[0].data)

以上程序執行結果如下:

Root element : New Arrivals*****Movie*****Title: Enemy BehindType: War, ThrillerFormat: DVDRating: PGDescription: Talk about a US-Japan war*****Movie*****Title: TransformersType: Anime, Science FictionFormat: DVDRating: RDescription: A schientific fiction*****Movie*****Title: TrigunType: Anime, ActionFormat: DVDRating: PGDescription: Vash the Stampede!*****Movie*****Title: IshtarType: ComedyFormat: VHSRating: PGDescription: Viewable boredom

完整的 DOM API 文檔請查閱Python DOM APIs。

以上就是Python如何對XML 解析的詳細內容,更多關于Python對XML 解析的資料請關注好吧啦網其它相關文章!

標簽: Python 編程
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
99久久九九| 欧美亚洲tv| 蜜桃av一区二区| 国产一区二区三区黄网站| 亚洲天堂一区二区| 亚洲a成人v| 欧美中文字幕一区二区| 日韩精品乱码av一区二区| 国产精品亚洲一区二区三区在线观看| 综合国产在线| 国产在线日韩精品| 亚洲久久视频| 欧美日韩精品在线一区| 国产精品xxx在线观看| 国产午夜久久| 亚洲国产成人二区| 91精品视频一区二区| 国产一区日韩一区| 久久精品国产999大香线蕉| 日韩精品一二区| 亚洲四虎影院| 麻豆精品视频在线观看视频| 亚洲免费福利一区| 国产综合亚洲精品一区二| 国产欧美精品久久| 美女黄网久久| 99精品在线| 国精品产品一区| 国产精品入口久久| 综合色一区二区| 免费观看久久av| 色网在线免费观看| 精品亚洲免a| 久久国产三级| 视频一区二区欧美| 一本一道久久a久久精品蜜桃| 国产在线一区不卡| 国产精品视频一区二区三区四蜜臂 | 精品久久网站| 日韩**一区毛片| 日韩午夜av| 久久国产主播| 精品欧美日韩精品| 久久av超碰| 国产精品一区2区3区| 亚洲精品亚洲人成在线观看| 合欧美一区二区三区| 亚洲h色精品| 毛片在线网站| 精品国产精品久久一区免费式| 日韩精品成人| 影音先锋久久精品| 性色av一区二区怡红| 欧美亚洲国产精品久久| 成人美女视频| 福利一区二区三区视频在线观看| 日韩激情一区二区| 亚洲我射av| 综合精品一区| 亚洲精品动态| 日韩成人精品一区二区三区 | 国产精品成人国产| 国产精品午夜av| 国产私拍福利精品视频二区| 日韩av影院| 91精品一区| 国产精品videossex| 国产精品一区二区免费福利视频| 国产乱人伦丫前精品视频| 欧美亚洲一区二区三区| 日韩高清一区二区| 日韩av不卡一区二区| 日韩福利在线观看| 国产精品色婷婷在线观看| 国产精品白浆| 国产成人精品一区二区三区视频 | 国产亚洲欧美日韩精品一区二区三区| 日本欧美一区| 国产欧美69| 久久不见久久见免费视频7 | 国产精品香蕉| 精品国产美女a久久9999| 国产不卡精品在线| 蜜桃成人精品| 免费成人网www| 欧美中文日韩| 日韩欧美精品一区二区综合视频| 欧美日韩一区二区三区不卡视频| 国产欧美69| 亚洲天堂资源| 红桃视频国产一区| 日韩一区二区三免费高清在线观看 | 亚洲一区二区三区无吗| 亚洲狼人精品一区二区三区| 日韩国产欧美三级| 精品免费在线| 久久九九精品| 蜜桃视频免费观看一区| 国产亚洲一区二区三区不卡 | japanese国产精品| 免费人成在线不卡| 亚洲欧美视频| 久久国产生活片100| 9999国产精品| 欧美搞黄网站| 日韩欧美激情| 成人午夜网址| 黄色亚洲在线| 中文字幕av一区二区三区四区| 国产一卡不卡| 久久精品主播| 日本不卡高清视频| 日本激情一区| 香蕉精品999视频一区二区| 国产亚洲高清一区| 国产高潮在线| 天堂av在线一区| 麻豆精品一区二区综合av| 99热精品久久| 91欧美极品| 秋霞影视一区二区三区| 亚洲影院天堂中文av色| 国产一区二区三区四区五区传媒| 欧美在线观看视频一区| 人人爱人人干婷婷丁香亚洲| 欧美日韩免费看片| 少妇高潮一区二区三区99| 日韩成人精品一区| 亚洲无线观看| 手机在线电影一区| 玖玖玖国产精品| 国产成人精品一区二区免费看京| 国产一区二区精品| 精品国产99| 亚洲另类视频| 群体交乱之放荡娇妻一区二区| 日本不卡一区二区三区| 久久一级电影| 国产精久久一区二区| 亚洲免费激情| 精品视频在线你懂得| 国产精品婷婷| 丰满少妇一区| 亚洲精品乱码久久久久久蜜桃麻豆| 蜜桃久久久久| 午夜在线视频观看日韩17c| 精品国产aⅴ| 天堂va在线高清一区| 偷拍精品精品一区二区三区| 日本精品一区二区三区在线观看视频| 欧美一区二区性| 精品免费视频| 日韩va欧美va亚洲va久久| 九一精品国产| 精品国产不卡| 91精品国产自产精品男人的天堂| 欧美日韩精品一本二本三本| 精品国产99| 国产欧美另类| 蜜桃av一区二区在线观看| 国产日韩电影| 国产精品网站在线看| 亚洲自拍另类| 日韩欧美在线中字| 国产极品一区| 亚洲精品在线二区| 国产一区白浆| 久久美女性网| 福利视频一区| 国产精品极品在线观看| 色综合视频一区二区三区日韩 | 久久精品卡一| 精品国产精品国产偷麻豆| 日韩精品三级| 亚洲自啪免费| 午夜久久免费观看| 日韩精品久久久久久久电影99爱| 久久xxx视频| 日韩av一区二| 亚洲一区有码| 久久午夜精品| 女主播福利一区| 久久精品欧美一区| 日韩深夜视频| 精品成人18| 鲁大师精品99久久久| 91福利精品在线观看| 丝袜脚交一区二区| 尤物网精品视频| 欧美91视频| 欧美不卡视频| 亚洲婷婷在线| 久久高清精品| 亚洲不卡系列| 日韩欧美一区二区三区在线观看| 国产精品国产一区| 国产suv精品一区| 国产一区二区三区四区大秀 | 国产精品一站二站| 欧美日韩1区|