android saxparser截断xml标记内容

时间:2012-07-03 12:02:52

标签: java android xml eclipse saxparser

我正在使用saxparser来从文件中获取xml标记内容。一切都适用于非长数据xml。但是,当到达某个位置时,characters()事件收到截断的ch []并被触发两次。例如,1234567890被接收两次并且值被截断,如下面的示例所示。如何清除字符数组或内存?

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());

            }

1 个答案:

答案 0 :(得分:3)

允许对同一元素(see documentation)多次调用

characters()。您不应该假设它只会被调用一次,即使大多数情况是这样的。每次调用characters()时附加到缓冲区,然后在调用endElement()时存储该值。