我正在尝试使用 java 将一个大的 XML 文件拆分为较小的文件SAXParser
(特别是未压缩的 28GB 的维基百科转储)。
我有一个Pagehandler
扩展类DefaultHandler
:
private class PageHandler extends DefaultHandler {
private StringBuffer text;
...
@Override
public void startElement(String uri, String localName, String qName, Attributes attributes) {
text.append("<" + qName + ">");
}
@Override
public void endElement(String uri, String localName, String qName) {
text.append("</" + qName + ">");
if (qName.equals("page")) {
text.append("\n");
pageCount++;
writePage();
}
if (pageCount >= maxPages) {
rollFile();
}
}
@Override
public void characters(char[] chars, int start, int length) {
for (int i = start; i < start + length; i++) {
text.append(chars[i]);
}
}
}
所以我可以写出元素内容没问题。我的问题是如何获取元素标签和属性——这些字符似乎没有被报告。充其量我将不得不从作为参数传递的内容中重建这些startElement
- 这似乎有点痛苦。或者有没有更简单的方法?
我要做的就是遍历文件并将其写出,每隔一段时间滚动输出文件。这有多难:)
谢谢