0

我正在使用 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 中一些较大数据字段的全部内容。

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

谢谢你。

4

1 回答 1

0

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

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

公共 StringBuilder 附加(char str[],int offset,int len)

您可能会丢失一些向 ignorableWhitespace 回调报告的空格,但我想如果只是缺少空格,您会告诉我们的。

抱歉,不能再推荐了。遵循我祖母的座右铭:如果您正在寻找某样东西却找不到,那意味着您找错了地方;所以看看别的地方。

于 2012-05-09T14:31:52.950 回答