我正在使用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中某些较大数据字段的全部内容。
有谁知道为什么会发生这种情况?
谢谢。
答案 0 :(得分:0)
嗯,总是有可能currentText == null - 你可以消除这种可能性,我们不能。
请注意,执行追加的字符循环非常低效:您可以使用
public StringBuilder append(char str [],int offset,int len)
你可能会遗漏一些报告给ignorableWhitespace回调的空白,但我想如果只丢失空白,你就会告诉我们。
抱歉,不能再提示了。按照我祖母的座右铭:如果你正在找东西而找不到它,那就意味着你在寻找错误的地方;所以看看其他地方。