私は単純な xml フレームワークを使用していますが、状況があります。
私のxmlは以下のようになります。
<root>
<title> something </title>
<desc> something more </desc>
<mixture>
<nodeA id="4" type="A">
<nodeB id="5" type="B">
<nodeB id="6" type="C">
<nodeB id="7" type="D">
<nodeB id="8" type="E">
<nodeB id="9" type="F">
</mixture>
</root>
以下のようにクラスとアノテーションを定義しました。
@Root(strict=false,name="root")
class Root{
@Element
private String title;
@Element
private String desc;
@ElementList(required=false,inline=true)
@Path("mixture")
ArrayList<GenericNode> genericNodes;
}
@Root(strict = false)
@Convert(Convertor.class)
class GenericNode{
//no annotation are defined
//we ll handle the conversion ourself in "Convertor" class
}
mixture
問題は、内部のすべてのノードをリストにマップしたいことです。しかし、私が定義したカスタム コンバーターが呼び出されていません。属性required
を 削除するとArrayList<GenericNode> genericNodes;
、デシリアライズが例外で失敗します。
の名前またはエントリ属性を定義していないため、問題が発生する可能性がありますgenericNodes
。フレームワークはそれを適切にマップできません。どうすれば問題を解決できますか?
注: 1. AnnotationStratergy を使用しています
Serializer serializer = new Persister(new AnnotationStrategy());
2. マップする必要があるさまざまな種類のノードが 10 個のタグに近いため、ElementUnion 属性を使用したくありません