您好,登錄后才能下訂單哦!
xml文件除了給開發(fā)者看,更多的情況使用程序讀取xml文件的內(nèi)容,這叫做xml解析。
XML解析分為兩種方式:DOM和SAX。
DOM:W3C組織推薦的一種解析方式。
SAX:(Simple API for XML) 不是官方標準,它產(chǎn)生自XML社區(qū),幾乎所有的XML解析器都支持它。
JDK6.0提供新的解析方式StAX(Stream API for XML)
DOM解析原理:
1)JAXP (oracle-Sun公司官方)
2)JDOM工具(非官方)
3)Dom4J工具(非官方) 三大框架(默認讀取xml的工具就是Dom4j)
SAX解析原理
1)Sax解析工具(oracle-sun公司官方)
DOM解析
會把整個XML載入內(nèi)存,以DOM樹的形式存儲,支持回寫
如果XML文檔特別大,就會消耗計算機大量內(nèi)存,容易導(dǎo)致內(nèi)存溢出
SAX/StAx解析
相比DOM是一種更為輕量級的方案
采用串行方式讀取,基于事件驅(qū)動解析
編程相對復(fù)雜
不支持回寫,無法在讀取過程中修改XML數(shù)據(jù)
序號 | 視角 | DOM解析 | SAX解析 |
---|---|---|---|
1 | 原理 | 一次性加載xml文檔,不適合大容量的文件讀取 | 加載一點,讀取一點,處理一點。適合大容量文件的讀取 |
2 | 支持操作 | DOM解析可以任意進行增刪改讀 | SAX解析只能讀取 |
3 | 是否支持回讀 | DOM解析任意讀取任何位置的數(shù)據(jù),甚至往回讀 | SAX解析只能從上往下,按順序讀取,不能往回讀 |
4 | 編程方法 | DOM解析面向?qū)ο蟮木幊谭椒ǎ∟ode,Element,Attribute),Java開發(fā)者編碼比較簡單。 | SAX解析基于事件的編程方法。java開發(fā)編碼相對復(fù)雜。 |
xml解析器一次性把整個xml文檔加載進內(nèi)存,然后在內(nèi)存中構(gòu)建一顆Document的對象樹, 通過Document對象,得到樹上的節(jié)點對象,通過節(jié)點對象訪問(操作)到xml文檔的內(nèi)容。 缺點: 不適合讀取大容量的xml文件,容易導(dǎo)致內(nèi)存溢出。
Document樹只有一個根節(jié)點,樹上的分支叫節(jié)點(Node)。文檔中所有的元素、屬性、文本都會被解析成Node節(jié)點(標簽節(jié)點Element、屬性節(jié)點Attribute、文本節(jié)點Text、注釋節(jié)點)。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。