如何将大型XML转换为java中的字符串
问题描述:
作为PIG脚本的一部分,我需要获取使用UDF生成的XML并且XML太大(大约1.5GB)。目前我使用下面的代码,XML转换为字符串如何将大型XML转换为java中的字符串
StringWriter sw = new StringWriter();
XMLWriter output = new XMLWriter(sw, xmlFormat);
try {
output.write(document);
output.close();
} catch (IOException e) {}
return sw.toString();
此抛出的OutOfMemoryError为StringWriter的内部使用字符串缓冲区,它依赖于Arrays.As阵列使用整数索引和XML的长度超出了INT范围。
有没有办法将这个大的xml转换为字符串并将其发送回猪脚本?或者我们能否以任何其他方式实现它。
仅供参考 - 我们正在使用的dom4j(org.dom4j.Document
),用于处理个XML
UPDATE1: 我想下面这我现在能够存储800 MB,但仍是1.5 GB的失败文件代码
ByteArrayOutputStream result = new ByteArrayOutputStream();
try {
XMLWriter output = new XMLWriter(result, xmlFormat);
output.write(document);
output.close();
return result.toString("UTF-8");
} catch (IOException e) {}
AFAIK XML已经是基于文本的格式,所以它实际上已经是一个字符串。此外,我不知道为什么你要将它转换为字符串,也许问题在于你的推理。在任何情况下,您都可以:1)为JVM分配更多内存或2)使用文件而不是字符串进行传输,然后在另一端读取它。 – m0skit0