我已经实现了一些逻辑,允许我查询包含XML列的一组记录。对于每条记录,我将XML列数据保存为单独的XML文件,并生成相同数据的CSV文件。问题是我只能为极限数量的记录执行此操作,因为如果处理的记录太多,我会开始耗尽记忆。
目前的方法是:
要写入CSV,我将从查询返回的每个XML列(使用SQLXML对象)获取InputStream,并使用DOM Parser和一些XPath解析输入流,以便仅识别包含任何排序的元素文本(子节点,我真的不关心父母)。然后使用元素名称作为标题,将文本作为csv文件中的值。然后使用BufferedWriter和StringBuilders将数据写入文件以保存文本(一个用于标题,一个用于值)。
将数据保存到XML文件是通过获取上面提到的相同InputStream并将其转换为String然后最终使用BufferedWriter将其写入文件来完成的。这真的不是最好看的结果,因为整个XML数据在写入文件时放在一行,但它现在可以工作。
在Java中使用XML时我很新,所以只想获得有关可能的替代方案或更有效的实践的任何建议或意见来完成同样的过程。希望能够一次处理至少70条记录。
提前致谢。