0

所以我使用 DocumentBuilderFactory 和 DocumentBuilder 来解析 xml。所以它是DOM解析器。

但我想做的是提取字节数组数据(它是用base64编码的图像)

将其存储在一个对象中,然后在代码中将其写入另一个以 base64 编码的 xml。

将其存储在 btw 中的最佳方法是什么。将其存储为字符串?或作为字节数组?

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

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

更新:我得到了 XML 我无法控制以 binary64 编码的传入 XML

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

使用解析器我需要存储这个节点,问题是它应该是字节还是字符串,然后将它写到新 xml 中的另一个节点。再次以base64编码。

谢谢

4

3 回答 3

0

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

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

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

更新响应:

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

于 2012-07-11T14:21:01.773 回答
0

当您需要通过基于文本的协议(如 http)传输数据时,通常使用 Base64 编码。Base64 编码的作用是将二进制数据编码为一组字符,这些字符可以通过基于文本的协议发送,而不会出现任何编码/解码问题。

不确定您是否通过网络发送 xml,但您可以使用以下任何方法

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

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

于 2012-07-11T14:26:01.670 回答
0

Apache Commons 中有一个类可以帮助您确保 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 数据除了+and之外只是简单的字母字符/,因此如果将其存储在 String 中,应该不会有任何数据丢失。

于 2012-07-11T14:27:04.867 回答