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

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

Python如何對XML 解析

瀏覽:274日期: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视频| 精品色999| 一区二区三区四区日本视频| se01亚洲视频| 久久av在线| 婷婷综合成人| 麻豆久久一区二区| 日韩欧美自拍| 老色鬼久久亚洲一区二区| 日韩一区精品| 久久伊人亚洲| 亚洲成人三区| 日韩精彩视频在线观看| 国产欧美日韩综合一区在线播放| 麻豆91精品91久久久的内涵| 亚洲播播91| 免费在线观看视频一区| 国产日韩欧美三级| 久久国产毛片| 91福利精品在线观看| 欧美日韩免费观看视频| 亚洲一区二区毛片| 国产精品极品在线观看| 涩涩av在线| 亚洲日本三级| caoporn视频在线| 伊人国产精品| 日韩.com| 亚洲一级大片| 亚洲啊v在线| 午夜性色一区二区三区免费视频| 日韩综合一区| 日韩精品国产欧美| 久久亚洲精品中文字幕蜜潮电影| 日精品一区二区三区| 成人亚洲欧美| 亚洲精品在线a| 天堂日韩电影| 久久国产精品美女| 蜜臀久久久久久久| 三级在线看中文字幕完整版| 偷拍亚洲精品| 国产综合婷婷| 国产精品22p| 激情91久久| 久久久久亚洲精品中文字幕| 免费在线欧美视频| 免费高潮视频95在线观看网站| 亚洲精品激情| 高清av不卡| 国产精品66| 亚洲欧美网站在线观看| 亚洲无线一线二线三线区别av| 国产精品久久免费视频| 鲁大师成人一区二区三区| 国产一区二区久久久久| 日韩精品一区二区三区中文在线| 久久精品主播| 欧美91在线| 天堂精品久久久久| 在线视频观看日韩| 精品三级久久久| 国产欧美日韩在线一区二区| 免费精品视频| 亚洲二区视频| 天堂а√在线最新版中文在线| 国产日韩亚洲欧美精品| 最新国产精品视频| 婷婷综合社区| 日韩精品网站| 欧美日韩在线观看首页| 国产亚洲欧美日韩精品一区二区三区 | 久久99久久人婷婷精品综合| 蜜桃91丨九色丨蝌蚪91桃色| 欧美成人综合| 91精品久久久久久久久久不卡| 免费看久久久| 国产精品a久久久久| 国产亚洲欧美日韩精品一区二区三区| 亚洲一区二区成人| 香蕉精品视频在线观看| 99久久夜色精品国产亚洲1000部| 日韩欧美国产精品综合嫩v| 久久精品二区亚洲w码| 日韩国产欧美视频| 视频在线观看一区二区三区| 99热精品在线| 亚洲免费婷婷| 蜜臀av在线播放一区二区三区| 久久国产成人| 日韩精品一级中文字幕精品视频免费观看 | 高清不卡亚洲| 免费福利视频一区二区三区| 国产高清不卡| 久久久影院免费| 好看的av在线不卡观看| 亚洲精品一二三区区别| 亚洲黄页一区| 亚洲精品进入| 欧美91在线| 久久国产尿小便嘘嘘| 亚洲精品人人| 日韩精品免费视频一区二区三区 | 美女视频免费精品| 国产专区精品| av一区在线| 激情综合激情| 午夜在线播放视频欧美| 国产精品嫩草99av在线| 免费看的黄色欧美网站| 日日夜夜免费精品视频| 91欧美日韩在线| 国精品产品一区| 久久av日韩| 久久精品伊人| 日韩av免费| 黄色成人在线网址| 亚洲开心激情| 你懂的亚洲视频| 蜜桃成人精品| 影音先锋国产精品| 欧美一区二区三区久久精品| 国产精品成人一区二区不卡| 亚洲精品在线观看91| 日本成人中文字幕| 国产成人77亚洲精品www| 久久国产精品成人免费观看的软件| 中日韩男男gay无套| 六月婷婷一区| 欧美成人aaa| 伊人久久成人| 麻豆国产欧美一区二区三区| 亚洲综合电影| 亚洲深夜福利在线观看| 久久av综合| 婷婷激情久久| 亚洲香蕉久久| 成人小电影网站| 在线综合亚洲| 老色鬼精品视频在线观看播放| 久久一区精品| 日韩免费福利视频| 丝袜美腿亚洲色图| 欧美激情麻豆| 国产精品试看| 美女久久精品| 99riav国产精品| 久久成人av| 国产99精品一区| 国产日产精品一区二区三区四区的观看方式 | 精精国产xxxx视频在线野外| 涩涩涩久久久成人精品| 日韩一区三区| 97久久超碰| 婷婷综合五月| 精品视频在线观看网站| 久久久夜夜夜| 国产欧美日韩| 亚洲欧洲一区二区天堂久久| 国产精品115| 亚洲一区有码| 亚洲午夜黄色| 精品国产中文字幕第一页| 首页亚洲欧美制服丝腿| 欧美一级鲁丝片| 国产精品手机在线播放| 国产精品久久久久av电视剧| 国产欧美自拍一区| 中文在线不卡| 99热精品久久| 日韩高清在线不卡| 欧美日韩在线播放视频| 免费在线观看一区| 欧美日韩国产亚洲一区| 日本精品国产| 美女精品一区| 日韩精品诱惑一区?区三区| 欧美日韩va| 欧美日韩精品免费观看视频完整| 欧美国产一级| 日韩毛片一区| 久久不射网站| 久久久久久久久久久妇女| 久久久久97| 亚洲精品成a人ⅴ香蕉片| 国产99精品| 日韩av在线中文字幕| 国产精品一区毛片| 亚洲精品亚洲人成在线观看| 欧美午夜精彩| 国产一区二区精品久| 国产乱子精品一区二区在线观看 | 性色一区二区| 日韩视频网站在线观看| 成人国产精品| 精品久久电影| 国产精品久久久久久久久久白浆 | 人人精品久久|