将xml字符串反序列化为对象时,java中的流标头无效
我有一个小项目。我想将xml字符串反序列化为对象,但在创建ObjectInputStream时出现错误“invalid stream header 3C3F786D” 代码:将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);//此处出错 元
字符串值=”
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();
}