我正在开发一个低于要求的应用程序 -
现在,我担心的是XML文件可能是大小的,比如'100MB',而我的JVM只有512 MB的内存,所以如何将这些内容放入Chunks并传递给Parsing然后插入数据到PL / SQL表中。
由于可以同时运行多个请求并考虑512MB内存,因此处理此问题的可能性最大。
如何将数据导入Chunks并将其作为Stream for XML解析传递。
答案 0 :(得分:5)
Java的XMLReader是一个SAX2解析器。在DOM解析器读取整个XML文件并创建(通常是大型)数据结构(通常是树)来表示其内容的地方,SAX解析器允许您注册将在XML文档的各个部分时调用的处理程序。认可。在该回叫代码中,您只能保存足够的数据来执行您所需的操作 - 例如您可以保存最终作为数据库中的单个行的所有字段,插入该行然后丢弃数据。使用这种类型的设计,程序的内存消耗较少取决于文件大小,而不是单个逻辑数据项的复杂性和大小(在您的情况下,数据将成为数据库中的一行)。
即使你确实使用了DOM风格的解析器,事情也可能没有你想象的那么糟糕。 XML非常冗长,因此(取决于它的结构等)100 MB文件通常只代表10-20 MB的数据,而且只需5 MB的数据就不会特别罕见或难以置信。
答案 1 :(得分:3)
任何SAX解析器都应该工作,因为它不会像DOM解析器那样将整个XML文件加载到内存中。