2013-02-11 121 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