1

我正在尝试使用 VTDGen 库解析 xml 文件。在我遇到超过 1GB 的 xml 文件时,解析 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 

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

先感谢您。

4

2 回答 2

1

阅读有关 VTD 的限制:

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

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

于 2013-12-20T18:58:08.733 回答
0

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

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