xstream原始反序列化不起作用?

时间:2012-05-09 14:49:56

标签: java xml-serialization xstream

我正在使用XStream序列化程序来序列化一个原语并遇到反序列化的问题。这是问题描述:

说,我有:

int i = 80;

我将其序列化如下:

serializer.toXML(i, new FileOutputStream("me.xml"));  

并获取此xml:

<int>80</int>

但是当我试图去实现时:

i = (int) serializer.fromXML("me.xml");

我得到了这样的例外:

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: -1
    at com.thoughtworks.xstream.core.util.FastStack.pop(FastStack.java:42)
    at com.thoughtworks.xstream.io.xml.AbstractPullReader.move(AbstractPullReader.java:125)
    at com.thoughtworks.xstream.io.xml.AbstractPullReader.moveDown(AbstractPullReader.java:103)
    at com.thoughtworks.xstream.io.xml.XppReader.<init>(XppReader.java:63)
    at com.thoughtworks.xstream.io.xml.AbstractXppDriver.createReader(AbstractXppDriver.java:54)
    at com.thoughtworks.xstream.XStream.fromXML(XStream.java:912)
    at com.thoughtworks.xstream.XStream.fromXML(XStream.java:903)
    at Utilities.Parser.serializeTimeIntervalDuration(Parser.java:371)
    at Utilities.Parser.parseData(Parser.java:152)
    at CoreLayer.Main.Main.main(Main.java:52)  

有人能指出我的错误吗?

提前致谢!

1 个答案:

答案 0 :(得分:3)

那是因为fromXML()需要XML,而不是文件名。您应该在解析之前从文件中读取XML。

请注意XStream有多个fromXML()实现,因此您可以提供字符串,URL,读者等。

目前XStream试图理解字符串“me.xml”。