在public void characters(char[] ch, int start, int length)中,
String value = new String(ch,start,length); 
当数据量大时,会丢失数据。
应该怎么样处理?

解决方案 »

  1.   

    使用StringBuilder或StringBuffer,和用String有什么区别呢?
      

  2.   

    我在网上看到,SAX这种方式有限制,每次取数据2k,容易丢失数据,
    不知道怎么解决?
      

  3.   

    http://www.xue5.com/itedu/200707/133782.html
    看看他怎么说的 
      

  4.   

    是否是characters(char[] ch, int start, int length)中的ch每次解析的数据量是2k多余的就会丢失?
      

  5.   

    用这个CharArrayWriter,别用StringBuilder,去看jdk文档就会明白为什么。
      

  6.   

    CharArrayWriter使用它们可以将字符数组当作字符数据输出或输入的来源
      

  7.   

    如果使用CharArrayWriter,还需要关闭吗?
      

  8.   

    如何将char[]转换成CharSequence 类型?
      

  9.   

    用CharArrayWriter时报数组溢出用StringBuilder时没有?这是怎么回事?
      

  10.   

    看看这位的
    http://blog.163.com/aaron_chan_520/blog/static/27852686200861771139299/
      

  11.   

    或者
    http://hi.baidu.com/luozhh/blog/item/4e3b76545eb9215cd0090670.html
      

  12.   

    你搞错了characters方法了,这个方法可能会调用非常多次的。所以你必须使用一个StringBuilder保存这些内容。在endElement的时候才可以认为这个text结束了。
      

  13.   

    用CharArrayWriter来缓存不可以吗?
      

  14.   

    此类实现一个可用作 Writer 的字符缓冲区。缓冲区会随向流中写入数据而自动增长。可使用 toCharArray() 和 toString() 检索数据。 
      

  15.   

    确实不知道SAX有什么限制,请指教了
      

  16.   

    SAX没有什么长度限制,只是characters会在startElement和endElement之间调用多次而已,所以你必须等待endElement的时候才可以认为这个文本结点结束。
    所以你应该使用StringBuilder缓存,
    在startElement的时候调用sb.setLength(0);
    每次characters时调用sb.append(ch, start, length);
    在endElement的时候才调用String str = sb.toString()