android sax解析器不完整的char数组

时间:2012-12-05 13:02:06

标签: java android saxparser

我发现了一些与此问题相关但无法找到解决方案的帖子。问题是在character()函数上,ch []数组包含上次调用的不完整或最后一个元素,有时会发生这种情况,但98%的情况下都能正常工作。文件名没有特殊的字符,也没有奇怪的名字。

如果我们有,

<tag>image1test.jpg<tag> 
<tag>image2bla.jpg<tag>

工作时,char数组包含正确的值但是当没有,当从示例中为第二个标记调用字符函数时,我们得到,

[i,m,a,g,e,2,b,e,s,t](来自最后一次通话的剩余字符)

如何解决?感谢。

@Override
public void characters(char ch[], int start, int length) {
if(this.v_new){
myNewsXMLDataSet.setNews(new String(ch, start, length));

}

1 个答案:

答案 0 :(得分:1)

解析器不需要仅在您的处理程序上调用characters(char[],int,int)一次。您必须预期多次调用,并且仅在调用endElement()方法后处理该值。

public class Handler extends DefaultHandler {

    private StringBuilder sb = new StringBuilder();
    @Override
    public void characters(char[] ch, int start, int length) throws SAXException {
        sb.append(ch, start, length);

    }

    @Override
    public void endElement(String uri, String localName, String qName) throws SAXException {
        doStuffWith(sb.toString());
        sb = new StringBuilder();
    }
}