DefaultHandler characters()方法行为

时间:2014-11-07 10:06:22

标签: java xml saxparser

我刚刚读到characters(char[] ch, int start, int length)可以多次调用一个内部XML数据(例如<name>John Smith</name>)。

在我的项目中,我必须解析大的XML文件(1.5 GB)并将其放在数据库中,所以我不能手动浏览数据库和文件以查看是否一切正常。所以我的问题是做这样的事情是安全的:

public void characters(char[] ch, int start, int length) throws SAXException {
      dataForDatabase = new String(ch,start,length);
}

dataForDatabase是此解析器的类成员。

之后在endElement ...

public void endElement(String uri, String localName, String qname) throws SAXException {
     putDataToDatabase(dataForDatabase);
}
如果多次调用dataForDatabase方法,

赢得characters()被覆盖?

提前致谢!

1 个答案:

答案 0 :(得分:1)

是的,它会被覆盖。您应该使用stringbuilder并附加字符。在startElement中初始化stringbuilder。在endElement中,您确实可以将其存储到数据库中。