如何从一个xml中提取字节数组并将其存储在另一个Java中

问题描述:

因此,我使用DocumentBuilderFactory和DocumentBuilder来解析xml。 所以它是DOM解析器。如何从一个xml中提取字节数组并将其存储在另一个Java中

但是我试图做的是提取字节数组数据(64位编码的图像)

储存于一个对象,后来在代码写出来,以base64编码另一个XML。

什么是存储这个在btw中的最佳方式。 将其存储为字符串?或者作为ByteArray?

如何以最佳方式提取字节数组数据并将其写出。

我没有这方面的经验,所以想从小组获得意见。

更新:我给XML我没有自带的编码

< byte-array > 
    ... base64 encoded image ... 
< /byte-array > 

使用解析器我有我需要存储这个节点,问题是应该说是字节或字符串 binary64传入XML的控制然后用新的xml将它写出到另一个节点。再次用base64编码。

谢谢

图像应该作为字符串存储在第一个xml中。也许是这样的:

<img src="data:image/gif;base64,sssssssssssss"/> 

如果您需要将相同的数据写入到第二个XML只使用已经编码相同的字符串。如果你需要改变图像。获取属性(element.getAttribute("src")),使用许多库中的一个(apache commons codec)对其进行解码,然后将其重新编码为第二个xml的字符串。

UPDATE RESPONSE:

至于你的更新。在<byte-array>元素中,你应该有纯文本。它可以存储为文本,然后在第二个xml中用作文本。

+0

他将如何确定MIME类型而不添加不必要的代码? – 2012-07-11 14:31:18

+0

如果OP只需要从一个xml复制到一个新的xml,那么就不需要解码和编码。无需理解“”中的内容。不需要任何MIME类型。另一方面,如果OP需要理解''内部的内容,那么应该有一些信息(或约定)在具有文件类型的地方。 – rmarimon 2012-07-11 15:16:10

当您需要通过基于文本的协议(如http)传输数据时,通常会使用Base64编码。 Base64编码所做的是将二进制数据编码为可通过基于文本的协议发送的字符集,而不存在任何编码/解码问题。

不知道您发送过线的XML,但是你可以使用任何的folloiwng方法

  1. 发送的base64字符串作为简单的字符串。但在这种情况下,编码和解码的责任将在发送和接收应用程序上。

  2. 使用标准base64Binaryxml type。在这种情况下,解析器将负责解码字符串。

有一个在Apache的百科全书一类,这将帮助您确保使用Base64数据完整性:

import org.apache.commons.codec.binary.Base64; 

String yourString = "testing"; 
byte[] encoded = Base64.encodeBase64(yourString.getBytes()); 

http://commons.apache.org/codec/apidocs/org/apache/commons/codec/binary/Base64.html

虽然Base64 data是除了+/简单字母字符,所以如果将其存储在字符串中,则不应该有任何数据丢失。