繁体   English   中英

如何在Java中将大型XML转换为字符串

[英]How to convert large XML to string in java

作为PIG脚本的一部分,我需要获取使用UDF生成的XML,并且XML太大(大约1.5GB)。 目前,我正在使用以下代码将XML转换为String

    StringWriter sw = new StringWriter();
    XMLWriter output = new XMLWriter(sw, xmlFormat);
    try {
       output.write(document);
        output.close();
    } catch (IOException e) {}

    return sw.toString();

由于StringWriter内部使用字符串缓冲区并且它依赖于Arrays,因此抛出OutofMemoryError,因为Arrays使用整数作为索引,并且XML的长度超出了int范围。

有没有办法将这个大的xml转换为String并将其发送回Pig脚本? 或者我们可以通过其他任何方式实现它。

仅供参考-我们正在使用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) {}

为了避免内存不足,您需要流式传输xml文件。 为此,您可以使用StreamingXMLLoader直接在Pig脚本中流式传输和解析xml。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM