如何使用ByteArrayOutputStream作为输出反序列化XMLSerializer对象

5

我有一个类似这样的代码可以生成一个序列化的XML文件:

private byte[] bytes;
...
OutputStream byteArrayOutputStream = new ByteArrayOutputStream();
XmlSerializer newSerializer = Xml.newSerializer();
newSerializer.setOutput(byteArrayOutputStream, "utf-8");
newSerializer.startDocument("utf-8", null);
newSerializer.startTag(null, "playlist");
newSerializer.attribute(null, "version", "1.0");
...
put all my XML tags
...

newSerializer.endTag(null, "playlist");
newSerializer.endDocument();
this.bytes= byteArrayOutputStream.toByteArray();

我需要做的是将这个字节数组再次转换为XML文件,但我不知道该如何操作!


2
你只需要将它保存到文件中还是需要更多的操作? - Artem Novikov
我将这个ByteArray发送到一个socket,但是我不知道如何反序列化它。 - Rodrigo Gontijo
2
你希望如何反序列化它?从 socket 的角度来看,你想要做类似于 file.getTag(...) 这样的操作吗?还是只想将其保存为文件? - Artem Novikov
2
你已经传递了包含格式化的 XML 的字节。 - Artem Novikov
你只需要一个字符串吗?还是需要更多的东西? - Artem Novikov
显示剩余5条评论
1个回答

1
您可以按照以下方式更改现有的序列化和反序列化:
try {
        ByteArrayOutputStream baos = new ByteArrayOutputStream();
        ObjectOutputStream os = new ObjectOutputStream(baos);
        os.writeObject(newSerializer);
        ObjectInputStream oin = new ObjectInputStream(new ByteArrayInputStream(baos.toByteArray()));
        return (XmlSerializer) oin.readObject();
    } catch (Exception e) {
        throw new Exception("Exception occurred:" + e.getMessage(), e);
    }

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接