(以下全部用Java编写)
我必须构建一个应用程序,该应用程序将可能非常大的 XML 文档作为输入。该文档已加密(不是使用 XMLsec,而是使用我客户预先存在的加密算法),将分三个阶段进行处理:
首先,将根据上述算法对流进行解密。
其次,扩展类(由第三方编写的我提供的 API)将读取文件的某些部分。读取的数量是不可预测的——特别是不能保证它位于文件的标头中,但可能出现在 XML 中的任何位置。
最后,另一个扩展类(相同的处理)会将输入 XML 细分为 1..n 个子集文档。这些可能在某种程度上与第二个操作处理的文档部分重叠,即:我相信我将需要倒回我用来处理该对象的任何机制。
这是我的问题:
有没有一种方法可以做到这一点,而无需一次将整个数据读入内存?显然,我可以将解密实现为输入流过滤器,但我不确定是否可以按照我描述的方式解析 XML;通过遍历尽可能多的文档来收集第二步的信息,然后倒回文档并再次通过它以将其拆分为多个作业,理想情况下释放文档中不再使用的所有部分他们已经通过了。
斯塔克斯是正确的方法。我建议看看Woodstox http://woodstox.codehaus.org/
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)