Как игнорировать неиспользуемые элементы XML при десериализации документа? - PullRequest
36 голосов
/ 20 января 2011

Я использую 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

Итак ... как мне настроить POJO, чтобы я мог правильно проанализировать XML?

Ответы [ 2 ]

86 голосов
/ 20 января 2011

Установите для strict значение false в аннотации Root, чтобы игнорировать любые элементы или атрибуты XML, которые не отображаются в классе.

@Root(strict=false)

В качестве альтернативы , установите strict в false, когда вы читаете XML в сериализаторе :

Root root = serializer.read(Root.class, source, false);
5 голосов
/ 01 марта 2015

вы можете добавить (обязательно = false) к одному элементу

@Element(required=false)
private int statusCode;

, если у вас есть больше элементов, используйте

 @Root(strict=false)
...