在專案裡面遇到了一些被解析的xml檔案超過30m 或 60m 以上的情況, 現在已經不好去說為什麼不在一開始產生xml的情況下就把xml 做小點,但是遇到這個問題後,我只能解決問題了,解決問題同時害怕重**明輪子,我也去看了下現有的xml 解析東西,jdom 的saxbuilder和 dom4j 的saxreader都是把xml檔案一次讀入,xml檔案過來 會報溢位的異常 但即使saxparser是可以批量讀入解析,但它也是一次解析完,假設xml檔案中有一萬條資料,解析後就必須在記憶體中放這麼多的物件 個人覺得這樣有些不靈活,就自己做了個小東西來切分 但前提是這個xml檔案得有檔案頭 <?xml version="1.0" encoding="gbk"?> encoding必須跟檔案編碼格式一致 ,不然解析的時候會出亂碼。
個人水平有限,但很希望得到大家的指正,希望大家不吝嗇手中的磚頭
**中popdivideddataafterparser() 輸出的stringbuffer 可用來初始化乙個 stringreader 再給dom4j 的saxreader去解析,這樣聯合一起用, 想處理多少,就先分出來解析多少,特別適合多執行緒的生產者和消費者的那種情況,希望對大家有用
答覆 大容量XML檔案解析輔助 xml批量分解
sax解析的話,會出現資料不完整的問題,因為它每次讀取的時候是2048的長度,這樣可能乙個完整句子,就被截斷了,嚴重影響資料的質量 dom4j有乙個類似sax的方法,也是基於事件觸發機制的,每次只讀出一段,然後在記憶體中形成乙個樹,一段一段的讀,效能上來看是挺好的,但是我試的時候,速度會稍微慢點,這...
建立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)
解析xml檔案 sax方式解析xml 對xml檔案解析有四種方法 dom sax jdom dom4j 現著重講一下sax解析xml檔案。1 通過一定的方式獲取檔名 獲得檔案路徑 string xmlfilepath ticanserviceaccess.getsystemsupportservic...