web-dev-qa-db-ja.com

ドキュメントの逆シリアル化中に未使用のXML要素を無視するにはどうすればよいですか?

SimpleXmlを使用してPOJOを(逆)シリアル化します。今、私は必要のないいくつかの要素を持っている大きなXMLを持っています。たとえば、このXMLでは次のようになります。

<Root>
   <Element>Used</Element>
   <Another>Not used</Another>
<Root> 

次のようなPOJOを作成したいと思います。

@Root
class Root{
    @Element
    private String element;
}

問題は、この例外が発生することです。

simpleframework.xml.core.ElementException: Element 'Another' does not have a
match in class blah.blah.Blah at line 1

では... XMLを正しく解析できるようにPOJOをどのように構成する必要がありますか?

36
Cristian

Rootアノテーション内でstrictをfalseに設定して、クラスに表示されないXML要素または属性を無視します。

@Root(strict=false)

あるいはシリアライザー のxmlを読み取るときにstrictをfalseに設定します。

Root root = serializer.read(Root.class, source, false);
86
dogbane

単一の要素に(required = false)を追加できます

@Element(required=false)
private int statusCode;

より多くの要素がある場合は

 @Root(strict=false)
5