AndroidでSimpleXmlを使用して、制御できないxmlを逆シリアル化しています。現在、xml が変更されるたびに、オブジェクト クラスで新しい要素が定義されていないため、アプリにブレーキがかかります。これらのミスマップを無視するためだけに SimpleXML を指定する方法はありますか? ドキュメントを見て、それを解決するのに役立つものは何も見つかりません。
2 に答える
@Root
通常の宣言をに置き換えることで、厳密なマッピングを回避できると確信しています@Root(strict=false)
。これにより、すべての要素がクラス定義のフィールドと一致する必要がなくなります。より正確には、ドキュメントから:
これは、表されるオブジェクトを厳密な方法で解析する必要があるかどうかを判断するために使用されます。厳密な解析では、XML ドキュメントの各要素と属性がクラス スキーマのフィールドと一致する必要があります。要素または属性がフィールドと一致しない場合、解析は例外で失敗します。厳密な解析を false に設定すると、ソース XML ドキュメント内の詳細を逆シリアル化中にスキップできます。
また、Simple XML プロジェクト サイトのチュートリアルのリストにも例が示されています。
read
最後のパラメーターとして「false」を追加することで、特定のすべてのタグに対して厳密モードを無効にするように指定できます。また、彼らのドキュメントから:
ルーズ マッピングを必要とするオブジェクトが複数ある場合、ルート アノテーションの使用は理想的なソリューションではない可能性があります。このようなシナリオでは、パーシスタ自体に緩やかなマッピングを実行するように依頼できます。必要なマッピングのタイプを示すブール値を read メソッドに渡すだけです。デフォルトでは、永続化機能は厳密なマッピングを使用します。これは、上記の例に示すように、ルート アノテーションを使用してオブジェクトごとにオーバーライドできます。ただし、以下のコード スニペットに示すように、このデフォルトはオーバーライドできます。
Contact contact = serializer.read(Contact.class, source, false);