将xml字符串反序列化为对象时,java中的流标头无效

将xml字符串反序列化为对象时,java中的流标头无效,java,xml,deserialization,Java,Xml,Deserialization,我有一个小项目。我想将xml字符串反序列化为对象,但在创建ObjectInputStream时出现错误“invalid stream header 3C3F786D” 代码: 字符串值=” fdfdfd 5.2.0.15947 "; ByteArrayInputStream bi=新的ByteArrayInputStream(value.getBytes()); 如果(bi!=null) { ObjectInputStream in=新ObjectInputStream(bi);//此处出错 元

我有一个小项目。我想将xml字符串反序列化为对象,但在创建ObjectInputStream时出现错误“invalid stream header 3C3F786D”

代码:

字符串值=”
fdfdfd
5.2.0.15947
";
ByteArrayInputStream bi=新的ByteArrayInputStream(value.getBytes());
如果(bi!=null)
{
ObjectInputStream in=新ObjectInputStream(bi);//此处出错
元数据元数据=.readObject()中的(元数据);
}
我有谷歌,我知道String.getBytes不能用于ObjectInputStream。 那么,我怎么能做到呢

已解决

我已经使用JAXB进行了序列化。看见

其思想是,is将读取由
ObjectOutputStream
创建的字节,而不是一些任意字符串。如果要反序列化XML,应该使用XML反序列化器,而不是
ObjectInputStream
   String value=" <?xml version="1.0" encoding="utf-8"?>
    <metaData xmlns="....">
      <data key="aa">fdfdfd</data>
      <data key="bb">5.2.0.15947</data>
      <data key="tt">
        <ee SI="SIDocument">
        </ee>
      </data>
    </metaData>";



  ByteArrayInputStream bi = new ByteArrayInputStream(value.getBytes());
                    if(bi!=null)
                    {
                     ObjectInputStream in = new ObjectInputStream(bi);// error here
                     MetaData metaData= (MetaData) in.readObject();
                    }