我正在解析具有Base64编码图像的XML。我想提取图像并解析XML的其余部分。我为提取图像而编写的代码如下:
private void saveFormImage(String imageText) throws IOException {
FileOutputStream fos = null;
try {
Base64 base64=new Base64();
byte decoded[]=base64.decode(imageText.getBytes());
File file = new File(<file loc>);
fos = new FileOutputStream(file);
fos.write(decoded);
} finally {
IOUtils.closeQuietly(fos);
}
}
我使用JDOM来解析XML并首先获取imageText作为String并将字符串传递给此方法。然后,我使用Apache编解码器库解码Base64编码数据并存储到文件中。
这是最好的方法吗?这不是非常快。它在大约2s结束。有没有更快,更有效的方法呢?
在下面的评论中更新 - 有没有办法将XML中的数据直接传输到OutputStream并只解码内存中的缓冲区?这是一种更有效的内存处理方式吗?或者,当XML大小最大为2.5 MB时,这是否重要。
答案 0 :(得分:2)
文档的其余部分怎么样?你想丢弃吗?
如果是,那么请看一下STAX(XML的流式API):
http://docs.oracle.com/javase/7/docs/api/javax/xml/stream/package-summary.html
它是Java SE 6的一部分。
如果您还要解析文档的其余部分,请考虑使用自定义绑定的JAXB。