gpt4 book ai didi

Java:使用 SAXParser 拆分大型 XML 文件

转载 作者:行者123 更新时间:2023-11-30 11:57:23 25 4
gpt4 key购买 nike

我正在尝试使用 java 的 SAXParser 将一个大的 XML 文件拆分成多个较小的文件(特别是未压缩的大约 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 的内容来重建这些 - 这似乎有点痛苦。或者有更简单的方法吗?

我想做的就是遍历文件并将其写出,每隔一段时间滚动输出文件。这有多难:)

谢谢

最佳答案

我不太确定我是否完全理解您正在尝试做的事情,但是要获取字符串形式的限定名称,您只需执行 qName.toString() 并获取属性名称即可执行 atts.getQName(int index)

关于Java:使用 SAXParser 拆分大型 XML 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3850315/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com