2013-02-11 122 views
-3

我在Android的使用SAX解析器。我必須像這樣更改EventHandler:隨機?解析錯誤

else if(xGrowerNotes){ 
       profile.setGrowerNotes(profile.getGrowerNotes()+chars); 
       //random bug 
      } 

我有一個使用UTF-8編碼的4種語言的XML文件的版本。我打電話解析器

is.setEncoding("UTF-8"); 

3種語言正常工作,但是,西班牙人一個麻煩我。 它開始像沒有apretar拉斯植物。 Regul ......並且這個事件被稱爲2次。意思是沒有改變,它會削減第一部分,只設置「ar las plantas。Regul ...」作爲文本。如果我在字符串前添加「test 1 2 3」,剪切就會移動,這意味着它就像前13個字符被剪切一樣。只有在西班牙語版本中,所有文檔都是相同的編碼。在文本的末尾添加「test 1 2 3」擴展了第二個字符串。

任何人都可以澄清這一點嗎?提前致謝!

+0

我們將能夠更好地解釋,如果你有更多一點的事件處理程序代碼。 – 2013-02-11 12:21:34

回答

0

documentation

解析器將調用此方法來報告字符數據的每個存儲塊。 SAX解析器可能會將所有連續的字符數據返回到單個塊中,或者它們可能會將其分割爲多個塊;但是,任何單個事件中的所有字符必須來自相同的外部實體,以便定位器提供有用的信息。

這意味着你不能假定得到一個呼叫中的所有字符數據。爲了獲得完整的數據,所有報告的數據塊可能需要追加幾次。

+0

嗯,我知道,例如&將字符串分割成3個部分,然而,西班牙文本看起來像純文本給我,我想不通爲什麼分析器後X字符分割字符串 – user1497119 2013-02-11 12:31:30

+0

這是因爲所用的緩衝區解析器恰好結束於文本的中間。合同允許解析器甚至分別傳遞每個字符(這當然會是瘋狂的),你的程序必須正確處理。 – Henry 2013-02-11 12:37:08

+0

所以這意味着我必須驗證所有數字?這意味着它可能發生的一些 2.345123給我回2串2.34和5123 e.g ..? – user1497119 2013-02-11 12:42:05