有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

如何从一个xml中提取bytearray并将其存储在Java中的另一个xml中

因此,我使用DocumentBuilderFactory和DocumentBuilder解析xml。 这就是DOM解析器

但我试图做的是提取字节数组数据(这是一个用base64编码的图像)

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

顺便说一句,什么是最好的存储方式。 将其存储为字符串?还是像ByteArray那样

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

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

更新:我得到了XML,但我无法控制二进制编码的传入XML

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

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

谢谢


共 (3) 个答案

  1. # 2 楼答案

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

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

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

    2. 使用标准的base64Binary{a1}。在这种情况下,解析器将负责对字符串进行解码

  2. # 3 楼答案

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

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

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

    更新响应:

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