如何从一个xml中提取bytearray并将其存储在Java中的另一个xml中
因此,我使用DocumentBuilderFactory和DocumentBuilder解析xml。 这就是DOM解析器
但我试图做的是提取字节数组数据(这是一个用base64编码的图像)
将其存储在一个对象中,然后在代码中写入另一个用base64编码的xml
顺便说一句,什么是最好的存储方式。 将其存储为字符串?还是像ByteArray那样
如何以最佳方式提取字节数组数据并将其写出
我没有这方面的经验,所以我想从小组中获得意见
更新:我得到了XML,但我无法控制二进制编码的传入XML
< byte-array >
... base64 encoded image ...
< /byte-array >
使用我的解析器,我需要存储这个节点,问题是它应该是字节还是字符串 然后用新的xml将其写入另一个节点。同样使用base64编码
谢谢
# 1 楼答案
Apache Commons中有一个类可以帮助您确保Base64的数据完整性:
http://commons.apache.org/codec/apidocs/org/apache/commons/codec/binary/Base64.html
虽然,Base64 data只是
+
和/
之外的字母字符,但如果将其存储在字符串中,则不应该有任何数据丢失# 2 楼答案
当需要通过基于文本的协议(如http)传输数据时,通常使用Base64编码。Base64编码的作用是将二进制数据编码为一组字符,这些字符可以通过基于文本的协议发送,而不存在任何编码/解码问题
不确定是否通过网络发送xml,但可以使用以下任何方法
将base64字符串作为简单字符串发送。但在这种情况下,编码和解码的责任将取决于发送和接收应用程序
使用标准的
base64Binary
{a1}。在这种情况下,解析器将负责对字符串进行解码# 3 楼答案
图像应作为字符串存储在第一个xml中。也许是这样的:
如果需要将相同的数据写入第二个xml,只需使用已编码的相同字符串即可。如果您需要更改图像。获取属性(
element.getAttribute("src")
),使用多个库(apache commons codec)中的一个对其进行解码,然后将其重新编码为第二个xml的字符串更新响应:
至于你的最新情况。在
<byte-array>
元素中应该有纯文本。它可以存储为文本,然后在第二个xml中用作文本