gpt4 book ai didi

java - 巨大的 XML 文件 : Do I read a "page" and process it each time?

转载 作者:行者123 更新时间:2023-12-01 05:58:47 25 4
gpt4 key购买 nike

我需要处理一个巨大的XML文件,4G。我使用 dom4j SAX,但编写了自己的 DefaultElementHandler。代码框架如下:

SAXParserFactory sf = SAXParserFactory.newInstance();   
SAXParser sax = sf.newSAXParser();
sax.parse("english.xml", new DefaultElementHandler("page"){
public void processElement(Element element) {
// process the element
}
});

我以为我正在逐个“页面”处理巨大的文件“页面”。但似乎不是,因为我总是遇到内存不足的错误。我错过了什么重要的事情吗?谢谢。我是 XML 流程的新手。

最佳答案

您的 DefaultElement 实现对我来说看起来很困惑。看起来一切都堆积在 sBuilder 中,并且在找到根元素的末尾之前永远不会被清除,或者更有可能的是,内存不足。

如何读取元素文本取决于您需要解析哪种类型的 xml。每个元素都可以有文本,并且可以散布有子元素。一般来说,您在 Web 服务和配置文件中看到的 xml 类型,其中所有元素文本都位于叶元素中,然后在某些情况下,例如 XHTML,会发生散布的情况。

如果 xml 架构的工作方式是所有文本信息都在叶元素中,那么您可以缓冲从 startElement 开始获得的文本,并在 endElement 中使用累积的文本,然后清除缓冲区。

这是一篇关于 SAX 的好文章:http://www.javaworld.com/javaworld/jw-08-2000/jw-0804-sax.html

关于java - 巨大的 XML 文件 : Do I read a "page" and process it each time?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1913551/

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