代码之家  ›  专栏  ›  技术社区  ›  Rodrigo Gontijo

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

  •  5
  • Rodrigo Gontijo  · 技术社区  · 8 年前

    我有这样一个代码来生成序列化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文件,我不知道该怎么做!

    1 回复  |  直到 8 年前
        1
  •  1
  •   Rakesh    8 年前

    您可以按如下方式更改现有的序列化和反序列化:

    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);
        }