VTDGen抛出ParseException:文件太大了

时间:2013-12-20 18:23:38

标签: java xml-parsing vtd-xml parseexception

我正在尝试使用VTDGen库解析xml文件。 它是完美的解析xml,直到我遇到超过1GB xml文件的麻烦。

这是我解析它的代码。

            VTDGen vg = new VTDGen();
            in = new SmbFileInputStream(fileToGet);
            byte[] b = new byte[(int) fileToGet.length()];
            in.read(b);             
            vg.setDoc(b);
            vg.parse(true);

这是我得到的错误。

com.ximpleware.ParseException: Other error: file size too big >=1GB 

有什么方法可以增加大小,还是我应该用另一个解析器编写代码?

提前谢谢。

2 个答案:

答案 0 :(得分:1)

了解VTD的局限性:

  • 各个字段的上限:(1)对于起始标记(最大Qname长度为2048;前缀512),溢出条件导致解析异常。对于其他令牌(上限为1M),可能会将长令牌分成多个较短的令牌。(2)深度字段溢出条件会导致解析异常。 (3)起始偏移:目前支持的最大文档是1G字符(1G字节或2G字节,具体取决于实际的文档编码)。

来自http://vtd-xml.sourceforge.net/userGuide/0.html

答案 1 :(得分:0)

有两种方法可以解决这个问题:

  1. 使用扩展的VTD-XML。它是vtd-xml发行版的一部分,共享一个非常相似的API,但它本身就是一个独立的产品。
  2. 关闭命名空间感知,这会将最大文档大小从1 GB提升到2 GB