0

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)  

誰かが私の間違いを指摘してもらえますか?

前もって感謝します!

4

1 に答える 1

3

これfromXML()は、ファイル名ではなく XML を想定しているためです。ファイルを解析する前に、ファイルから XML を読み込む必要があります。

XStreamには fromXML() の複数の実装があるため、文字列、URL、リーダーなどを提供できることに注意してください。

現在、XStream は文字列「me.xml」を理解しようとしています。

于 2012-05-09T14:54:30.880 に答える