XML檔案解析

2021-09-12 11:16:30 字數 898 閱讀 1177

dom是基於樹形結構的xml解析方式。他會將整個xml文件讀入記憶體並構建乙個dom樹,基於這棵樹形結構對各個節點(node)進行操作。xml文件中的每個成分都是乙個節點:整個文件是乙個文件節點,每個xml標籤對應乙個元素節點,包含在xml標籤中的文字是文字節點,每乙個xml屬性是乙個屬性節點,注釋屬於注釋節點。

dom解析的優缺點

dom解析方式最主要的好處是易於程式設計,可以根據需要在樹形結構的各個節點之間導航。可以很容易的獲得自己想要的資料,也可以很容易的新增和修改樹中的元素。但是因為要將整個文件載入到記憶體中,並且構建樹形結構,當xml文件的資料量較大時,會造成較大的資源消耗。

sax是基於事件模型的xml解析方式,他並不需要將整個xml文件載入到記憶體中,而只需要將xml文件的一部分載入到記憶體中,即可開始解析,在處理過程中並不會在記憶體中記錄xml的資料,所以占用的資源比較少。當程式處理過程中滿足條件時,也可以立即停止解析過程。

由於可以不用一次性將整個檔案載入至記憶體,所以它相對消耗的資源要小一些,對於很多的移動裝置來說這點還是挺有優勢的。但是由於是流式處理,所以處理過程只能從xml文件開始向後單向進行,無法自由導航。同時也不提供寫xml文件的功能。

jaxp是jdk提供的一套用於解析xml的api,從jdk1.6開始,jaxp開始支援另一種xml解析方式,也就是stax解析方式。

和sax解析很像,但是是相反的,由程式來呼叫解析器推進解析程序。stax實際上包括兩套處理xml文件的api,分別提供了不同程度的抽象,一種是基於指標的api,這是一種底層的api,效率高,但是抽象程度低。另一種api是基於迭代器的api,它允許應用程式把xml文件作為一系列事件物件來處理,效率較略低但抽象程度高。

有針對簡單和效能的兩種解析模式;由程式控制解析器,易於支援多輸入;強大的過濾功能有利於資料檢索。但是它與sax解析一樣,無法自由導航。同時也不提供寫xml文件的功能。

建立xml檔案 解析xml檔案

import codecs import xml.dom.minidom doc xml.dom.minidom.document print doc root doc.createelement booklist print u 新增的xml標籤為 root.tagname root.setatt...

解析XML檔案

sax解析xml 得到saxparse ctory saxparse ctory saxparse ctory saxparse ctory.newinstance 得到saxparser saxparser saxparser saxparse ctory.newsaxparser 得到xmlre...

XML檔案解析

xml是可擴充套件標記語言,用來傳輸和儲存資料。xml文件必須包含根元素,該元素是所有其他元素的父元素。xml文件中的元素形成了樹形結構。xml有以下特點 建立名稱是 textfile1.txt 的文件,設定屬性 複製到輸出目錄 如果較新則複製 在工程執行時,會自動將該txt檔案複製到bin下面。2...