SAX解析XML檔案有關characters的最大長度2048的問題

yangxi_001發表於2014-01-03

使用SAX解析XML檔案,我們都知道需要過載charaters方法

[java] view plaincopy
  1. @Override  
  2.     public void characters(char[] ch, int start, int length)  
  3.             throws SAXException  

但是用這個方法會有一點問題,其中ch這個char陣列的預設最長長度為2048,如果超過這個長度,將產生一個新的char陣列(也是2048長度)來儲存資料,於是如果我們需要解析的資料在兩個char之間的話(分別在一個的尾部和下一個的頭部),那麼我將會得到殘缺不全的資料,因此我們當我們讀到char資料的末尾時,我們需要先暫時儲存一下得到的資料,然後補在下一次得到的內容的前面。參考程式碼如下:

[java] view plaincopy
  1. String preMaxLengthCharacters = "";  
  2. final int CHARACTERS_MAX_LENGTH = 2048;  
  3. String content = new String(ch, start, length);  
  4.             if (start + length == CHARACTERS_MAX_LENGTH) {  
  5.                 preMaxLengthCharacters = content;  
  6.             }  
  7.             if (start == 0) {  
  8.                 content = preMaxLengthCharacters + content;  
  9.             }  

相關文章