Java 序列化的xstream错误&;反序列化

Java 序列化的xstream错误&;反序列化,java,xstream,Java,Xstream,我使用Java中的xStream从Java库序列化Java对象,并在客户端对其进行反序列化 我有几个问题: 如果我这样做: XStream xstream = new XStream(); xstream.setMode(XStream.ID_REFERENCES); xstream.autodetectAnnotations(true); Writer writer = new FileWriter(xmlFile); writer.write(xstream.toXML(my

我使用Java中的xStream从Java库序列化Java对象,并在客户端对其进行反序列化

我有几个问题:

如果我这样做:

XStream xstream = new XStream();
xstream.setMode(XStream.ID_REFERENCES);
xstream.autodetectAnnotations(true);
Writer writer = new FileWriter(xmlFile);        
writer.write(xstream.toXML(myObject));
writer.close();
XStream xstream = new XStream();
xstream.setMode(XStream.NO_REFERENCES);
xstream.autodetectAnnotations(true);
Writer writer = new FileWriter(xmlFile);        
writer.write(xstream.toXML(myObject));
writer.close();
=>序列化可以,但反序列化:
线程“main”com.thoughtworks.xstream.io.StreamException中的异常::仅允许在开始标记之前使用空格内容,而不允许。(位置:开始查看文档…@1:1)

如果我这样做:

XStream xstream = new XStream();
xstream.setMode(XStream.ID_REFERENCES);
xstream.autodetectAnnotations(true);
Writer writer = new FileWriter(xmlFile);        
writer.write(xstream.toXML(myObject));
writer.close();
XStream xstream = new XStream();
xstream.setMode(XStream.NO_REFERENCES);
xstream.autodetectAnnotations(true);
Writer writer = new FileWriter(xmlFile);        
writer.write(xstream.toXML(myObject));
writer.close();
=>我遇到了序列化问题:
线程“main”com.thoughtworks.xstream.io.StreamException中出现异常::只允许在开始标记之前出现空白内容,而不允许。(位置:开始查看文档…@1:1)
位于com.thoughtworks.xstream.io.xml.XppReader.pullNextEvent(XppReader.java:78)
位于com.thoughtworks.xstream.io.xml.AbstractPullReader.readRealEvent(AbstractPullReader.java:137)
位于com.thoughtworks.xstream.io.xml.AbstractPullReader.readEvent(AbstractPullReader.java:130)
位于com.thoughtworks.xstream.io.xml.AbstractPullReader.move(AbstractPullReader.java:109)
位于com.thoughtworks.xstream.io.xml.AbstractPullReader.moveDown(AbstractPullReader.java:94)
位于com.thoughtworks.xstream.io.xml.XppReader.(XppReader.java:48)
位于com.thoughtworks.xstream.io.xml.XppDriver.createReader(XppDriver.java:44)
位于com.thoughtworks.xstream.xstream.fromXML(xstream.java:853)
位于com.thoughtworks.xstream.xstream.fromXML(xstream.java:845)

使用xml:

<Test.Platform id="1">
    <TaskImpl id="1">
          <model reference="2"/>
          <name>process</name>
    </TaskImpl>
</Test.Platform id="1">

过程
有什么建议吗


提前感谢。

所以这里忽略的是您在文件中的阅读方式。您正在使用

XStream xstream = new XStream();
xstream.fromXML("model.xml");
这就是错误中周期(.)的来源。fromXML方法需要的是实际的XML输入,而不是文件名。因此,当它解析您的xml(即“model.xml”而不是实际的xml)时,它给出了错误。XStream的站点现在已关闭,因此我无法链接到API

使用FileReader/BufferedReader返回XML的内容。像这样的东西应该有用

XStream instream = new XStream();

BufferedReader br = new BufferedReader(new FileReader("model.xml"));
StringBuffer buff = new StringBuffer();
String line;
while((line = br.readLine()) != null){
   buff.append(line);
}
Platform p = (Platform)instream.fromXML(buff.toString());

另外,我能够复制这个问题,并用上面的

解决它。你能发布你正在序列化的类吗?嗨,正如我提到的,我没有类结构,它在java库中。看看这是否有帮助,似乎有一段时间(.)导致havocI检查了我的xml输出,没有。在文档中!您能将xmlFile打印到其他输出并在回答中发布吗?并发布更多与例外相关的stacktrace Hi Sean,谢谢。我刚刚尝试了您从BufferedReader读取的方法,但仍然是相同的错误:(我发现,Xstream只适用于:InputStream InputStream=newfileinputstream(dseirFile);