我有巨大的 XML。我需要解析该文件并将每个<elem/>
字符串作为单个字符串保存到数据库中,但使用内存占用低的方法,因为文件可能很大(~500MB)。怎么做 ?我正在寻找这样做的可用示例。下面的示例和我不太好的解决方案:
<?xml version="1.0" encoding="UTF-8"?>
<doc>
<header>...<header>
<elem>
<a/><b/><c>...</c>
</elem>
<elem>
<a>...</a><b/><c>...</c>
</elem>
<elem>
<a>...</a>
</elem>
...
</doc>
拆分后:
{'<elem/>', '<elem/>', ...}
现在我正在使用如下 SAX DefaultHandler,但我认为这不是一个好的解决方案:
class DataFileParser extends DefaultHandler {
StringBuffer sb;
boolean sElem = false; // is elem
...
public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException {
if(sElem) {
sb.append("<"+qName+">");
}
if (qName.equalsIgnoreCase("elem")) {
sb = new StringBuffer();
sb.append("<"+qName+">");
sElem = true;
}
...
}
public void endElement(String uri, String localName, String qName) throws SAXException {
if (qName.equalsIgnoreCase("elem")) {
sElem = false;
sb.append("</"+qName+">");
}
...
}
public void characters(char ch[], int start, int length) throws SAXException {
if(sElem) {
sb.append(new String(ch, start, length));
}
}
...
}