XStream パッケージを使用して Java で文字列をデシリアライズしようとしています。XStream パッケージは、私のクラスを正常にシリアライズできます。サーバーから XML (XML の形式を変更することはできません) を取得し、そのノード情報を特定のクラスの対応する変数に保存しようとします。私の関数は一番下にあり、XStream オブジェクトの新しいコンバーターを登録しようとしましたが (1 つの変数がバイト配列であるためだと考えていました)、まだ運がありません。誰でもこれらの例外に光を当てることができますか? 「MyClass」を登録し、XStream 用の独自のコンバーターを作成して、クラスの逆シリアル化を処理する必要がありますか? 前もって感謝します。
文字列または StringReader オブジェクトが入力として fromXML() に渡された場合の例外:
[致命的なエラー] :1:1: プロローグではコンテンツを使用できません。
com.thoughtworks.xstream.io.StreamException: : プロローグではコンテンツは許可されていません。
com.thoughtworks.xstream.io.xml.DomDriver.createReader(DomDriver.java:86)
com.thoughtworks.xstream.io.xml.DomDriver.createReader(DomDriver.java:66)
com.thoughtworks.xstream.XStream .fromXML(XStream.java:853)
ByteArrayInputStream が fromXML() への入力として使用される場合の例外:
com.thoughtworks.xstream.converters.ConversionException: ByteSize : ByteSize : ByteSize : ByteSize
---- デバッグ情報 ----
メッセージ : ByteSize : ByteSize
cause-exception : com.thoughtworks.xstream.mapper.CannotResolveClassException
cause-message : ByteSize : ByteSize
クラス : MyClass
必須タイプ : MyClass
パス : /MyClass/ByteSize
at com.thoughtworks.xstream.core.TreeUnmarshaller.convert(TreeUnmarshaller.java:89)
at com.thoughtworks.xstream.core.AbstractReferenceUnmarshaller.convert(AbstractReferenceUnmarshaller. java:63)
com.thoughtworks.xstream.core.TreeUnmarshaller.convertAnother(TreeUnmarshaller.java:76) で
com.thoughtworks.xstream.core.TreeUnmarshaller.convertAnother(TreeUnmarshaller.java:60
)
で(AbstractTreeMarshallingStrategy.java:33)
com.thoughtworks.xstream.XStream.unmarshal(XStream.java:923)
com.thoughtworks.xstream.XStream.unmarshal(XStream.java:909)
com.thoughtworks.xstream.XStream. fromXML(XStream.java:861)
static Object fromXmlString(String xml)
{
XStream xStream = new XStream(new DomDriver());
xStream.registerConverter(new EncodedByteArrayConverter());
//tried all 3 below
//return xStream.fromXML(new StringReader(xml));
//return xStream.fromXML(new ByteArrayInputStream(xml.getBytes()));
return xStream.fromXML(xml);
}