中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

python 如何解析xml

發布時間:2020-09-21 11:22:01 來源:億速云 閱讀:155 作者:Leah 欄目:編程語言

今天就跟大家聊聊有關python 如何解析xml,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結了以下內容,希望大家根據這篇文章可以有所收獲。

Python的標準庫中,提供了6種可以用于處理XML的包。

(1)xml.dom

xml.dom實現的是W3C制定的DOM API。如果你習慣于使用DOM API或者有人要求這這樣做,可以使用這個包。不過要注意,在這個包中,還提供了幾個不同的模塊,各自的性能有所區別。

DOM解析器在任何處理開始之前,必須把基于XML文件生成的樹狀數據放在內存,所以DOM解析器的內存使用量完全根據輸入資料的大小。

(2)xml.dom.minidom

xml.dom.minidom是DOM API的極簡化實現,比完整版的DOM要簡單的多,而且這個包也小的多。那些不熟悉DOM的朋友,應該考慮使用xml.etree.ElementTree模塊。據lxml的作者評價,這個模塊使用起來并不方便,效率也不高,而且還容易出現問題。

(3)xml.dom.pulldom

與其他模塊不同,xml.dom.pulldom模塊提供的是一個“pull解析器”,其背后的基本概念指的是從XML流中pull事件,然后進行處理。雖然與SAX一樣采用事件驅動模型(event-driven processing model),但是不同的是,使用pull解析器時,使用者需要明確地從XML流中pull事件,并對這些事件遍歷處理,直到處理完成或者出現錯誤。

pull解析(pull parsing)是近來興起的一種XML處理趨勢。此前諸如SAX和DOM這些流行的XML解析框架,都是push-based,也就是說對解析工作的控制權,掌握在解析器的手中。

(4)xml.sax

xml.sax模塊實現的是SAX API,這個模塊犧牲了便捷性來換取速度和內存占用。SAX是Simple API for XML的縮寫,它并不是由W3C官方所提出的標準。它是事件驅動的,并不需要一次性讀入整個文檔,而文檔的讀入過程也就是SAX的解析過程。所謂事件驅動,是指一種基于回調(callback)機制的程序運行方法。

(5)xml.parser.expat

xml.parser.expat提供了對C語言編寫的expat解析器的一個直接的、底層API接口。expat接口與SAX類似,也是基于事件回調機制,但是這個接口并不是標準化的,只適用于expat庫。

expat是一個面向流的解析器。您注冊的解析器回調(或handler)功能,然后開始搜索它的文檔。當解析器識別該文件的指定的位置,它會調用該部分相應的處理程序(如果您已經注冊的一個)。該文件被輸送到解析器,會被分割成多個片斷,并分段裝到內存中。因此expat可以解析那些巨大的文件。

(6)xml.etree.ElementTree(以下簡稱ET)

xml.etree.ElementTree模塊提供了一個輕量級、Pythonic的API,同時還有一個高效的C語言實現,即xml.etree.cElementTree。與DOM相比,ET的速度更快,API使用更直接、方便。與SAX相比,ET.iterparse函數同樣提供了按需解析的功能,不會一次性在內存中讀入整個文檔。ET的性能與SAX模塊大致相仿,但是它的API更加高層次,用戶使用起來更加便捷。

建議:在使用Python進行XML解析時,首選使用ET模塊,除非你有其他特別的需求,可能需要另外的模塊來滿足。

看完上述內容,你們對python 如何解析xml有進一步的了解嗎?如果還想了解更多知識或者相關內容,請關注億速云行業資訊頻道,感謝大家的支持。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

崇信县| 定西市| 吉林省| 永州市| 汝阳县| 德兴市| 柳林县| 郁南县| 河北省| 耿马| 武夷山市| 汉沽区| 姜堰市| 蕉岭县| 读书| 海安县| 衡南县| 台东县| 嵊州市| 建宁县| 微山县| 桐庐县| 崇礼县| 顺义区| 大埔区| 中山市| 万安县| 和顺县| 民乐县| 抚州市| 天峻县| 平江县| 盐池县| 巢湖市| 措勤县| 随州市| 泽普县| 浑源县| 莱西市| 洛阳市| 通江县|