2012-05-09 2 views
0

Я использую сериализатор 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) 

Может кто-нибудь мне точку на своих ошибках?

Заранее благодарен!

ответ

3

Это потому, что fromXML() ожидает XML, а не имя файла. Вы должны прочитать свой XML-файл из файла перед его разбором.

Обратите внимание, что XStream имеет несколько реализаций FromXml(), так что вы можете обеспечить струнные, URL, считыватели и т.д.

В настоящее время XStream пытается понять смысл строки «me.xml».

+0

Брайан, спасибо вам большое, что сэкономило много времени. Я очень ценю это! –

Смежные вопросы