字符方法不捕获元素的所有数据 - SAX Parser - Java

时间:2012-05-09 12:52:56

标签: java android xml xml-parsing sax

我正在使用SAX解析器解析XML文档。我使用characters方法捕获两个元素标签之间提供的数据,这说明数据将以块的形式提供:

StringBuilder currentText = new StringBuilder();

...

public void characters(char ch[], int start, int length) {
        if (currentText!=null) {
            for (int i=start; i<start+length; i++) {
                currentText.append(ch[i]);
            }

然后在我使用的endElement方法中:

public void endElement(String namespaceURI, String localName, String qName) throws SAXException {
        System.out.println("Current Text is " + currentText.toString());
        currentText.setLength(0);

}

问题在于,当我查看日志时,currentText不会捕获XML中某些较大数据字段的全部内容。

有谁知道为什么会发生这种情况?

谢谢。

1 个答案:

答案 0 :(得分:0)

嗯,总是有可能currentText == null - 你可以消除这种可能性,我们不能。

请注意,执行追加的字符循环非常低效:您可以使用

public StringBuilder append(char str [],int offset,int len)

你可能会遗漏一些报告给ignorableWhitespace回调的空白,但我想如果只丢失空白,你就会告诉我们。

抱歉,不能再提示了。按照我祖母的座右铭:如果你正在找东西而找不到它,那就意味着你在寻找错误的地方;所以看看其他地方。