我正在尝试使用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
- 这似乎有点痛苦。或者有更简单的方法吗?
我想做的就是循环遍历文件并将其写出,经常滚动输出文件。这有多难:)
Thanks
我不太确定我完全理解你想要做什么,但要获得合格的名称作为你只需做的字符串qName.toString()
并获取您刚刚执行的属性名称atts.getQName(int index)
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)