使用大量数据处理XML文件

Man*_*iya 2 java xml

我正在开发一个低于要求的应用程序 -

  1. 从服务器下载ZIP文件.
  2. 解压缩ZIP文件,将此文件中的内容(以XML格式)获取为String.
  3. 将此内容传递给另一种解析和进一步处理的方法.

现在,我的担心是XML文件可能是大尺寸,比如'100MB',而我的JVM只有512 MB的内存,那么如何将这些内容放入Chunks并传递给Parsing然后将数据插入到PL中/ SQL表.

由于可以同时运行多个请求并考虑512MB内存,因此最好处理此请求.

我如何将数据导入Chunks并将其作为Stream for XML解析传递.

Jer*_*fin 5

Java的XMLReader是一个SAX2解析器.在DOM解析器读取整个XML文件并创建(通常是大型)数据结构(通常是树)来表示其内容的地方,SAX解析器允许您注册将在XML文档的各个部分时调用的处理程序.认可.在该回调代码中,您可以只保存足够的数据来执行您所需的操作 - 例如,您可以将所有字段保存为数据库中的单行,插入该行然后丢弃数据.使用这种类型的设计,程序的内存消耗较少取决于文件大小,而不是单个逻辑数据项的复杂性和大小(在您的情况下,数据将成为数据库中的一行).

即使你确实使用了DOM风格的解析器,事情可能也不像你期望的那么糟糕.XML非常冗长,因此(取决于它的结构等)100 MB的文件通常只代表10-20 MB的数据,而且只需5 MB的数据就不会特别稀少或难以置信.