Сохранение данных в кодировке Base64 из XML в файл - PullRequest
1 голос
/ 11 марта 2012

Я анализировал XML с изображением в кодировке Base64. Я хотел бы извлечь изображение и разобрать оставшуюся часть 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 вначале в виде строки и передаю строку этому методу. Затем я использую библиотеку кодеков Apache для декодирования закодированных данных Base64 и сохранения в файл.

Это лучший способ сделать это? Это не очень быстро. Это заканчивается примерно в 2 с. Есть ли более быстрый и эффективный способ памяти?

Как обновлено в комментарии ниже - Есть ли способ передать данные из XML напрямую в OutputStream и просто декодировать буфер в памяти? Это более эффективный способ памяти? Или это должно иметь значение, когда размер XML будет максимум 2,5 МБ.

1 Ответ

2 голосов
/ 11 марта 2012

А как насчет остальной части XML документа?Вы хотите отменить это?

Если да, то взгляните на STAX (потоковый API для XML):

http://docs.oracle.com/javase/7/docs/api/javax/xml/stream/package-summary.html

Это часть JavaSE 6.

Если вы также хотите проанализировать остальную часть документа, рассмотрите JAXB с пользовательскими привязками.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...