私は逆シリアル化にのみ興味があります。次のようなデータがあります。
<Data>
<Class name='ClassA'>
<Object name='ObjectA'>
<Relation name='RelationA'>
<toObject name='ObjectB'>
<toObject name='ObjectC'>
</Relation>
</Object>
<Object name='ObjectB'>
<Relation name='RelationB'>
<toObject name='ObjectA'>
<toObject name='ObjectC'>
</Relation>
</Object>
</Class>
<Class name='ClassB'>
<Object name='ObjectC'>
<Relation name='RelationC'>
<toObject name='ObjectB'>
</Relation>
</Object>
<NotUsedRelations>
<Relation name='RelationD'>
<toObject name='ObjectA'>
</Relation>
</NotUsedRelations>
</Class>
</Data>
Xstreamを使用して読み取りたいのですが、NotUsedRelations要素に問題があります。
stream.alias("Data", Model.class);
stream.alias("Class", Model.XMLClass.class);
stream.alias("Object", Model.XMLObject.class);
stream.alias("Relation", Model.XMLRelation.class);
stream.alias("toObject", Model.XMLObject.class);
Modelのすべての型は、Nameでコンストラクターを定義するXMLElement抽象クラスから拡張されます。その後、それらはすべて持っています
List<XMLElement> subElements;
プライベート変数、および彼のゲッター/セッター。
問題は、ClassにObjectサブ要素とNotUsedRelationsの暗黙のコレクションが含まれていることですが、RelationsとObjectsはどちらもXMLElementを拡張しているため、subElementsリストにまとめたいと思います。
stream.addImplicitCollection()とstream.aliasField()でさまざまなことを試しましたが、コンパイラは常に文句を言います
問題は、一方のタイプが暗黙のコレクションであり、もう一方のタイプは暗黙のコレクションではないということですが、NotUsedRelationsには実際のマップされたクラスがないため、暗黙のコレクションのみのエイリアスとして定義する必要があります。
助けてくれてありがとう!