2012-07-03 108 views
0

我使用saxparser爲了從文件中獲取xml標記內容。所有適用於非長數據XML的。但是,當到達某個位置時,characters()事件接收到截斷的ch []並被觸發兩次。例如對於1234567890接收兩次,值被截斷像下面的例子。如何清除字符數組或內存?android saxparser truncates xml標記內容

id 1234567890 
name myName1 
id 1234567890 
name myName2 
... 
(error) 
id 1234567 
id 890 
name myName3 

代碼:

private StringBuffer buf = new StringBuffer(2048); 

      @Override 
      public void characters(char ch[], int start, int length) throws SAXException { 

      if(this.v_Id){ 

       buf.append(ch, start, length); 

       myParsedXMLDataSet.setId(buf.toString()); 

       Log.d("id", buf.toString()); 

       buf.delete(0, buf.length()); 

      } 

回答

3

characters()允許被稱爲多時間對於相同的元件(see documentation)。你不應該認爲它只會被調用一次,即使大部分時間都是這樣。每次調用characters()時追加到緩衝區,然後在調用endElement()時存儲該值。