如何在反序列化文档时忽略未使用的XML元素?

Cri*_*ian 36 java xml-deserialization simple-framework

我正在使用SimpleXml来(de)序列化POJO.现在,我有一个大的XML,它有一些不需要的元素.例如,使用此XML:

<Root>
   <Element>Used</Element>
   <Another>Not used</Another>
<Root> 
Run Code Online (Sandbox Code Playgroud)

我想创建一个POJO,它看起来像:

@Root
class Root{
    @Element
    private String element;
}
Run Code Online (Sandbox Code Playgroud)

问题是我得到了这个例外:

simpleframework.xml.core.ElementException: Element 'Another' does not have a
match in class blah.blah.Blah at line 1
Run Code Online (Sandbox Code Playgroud)

那么......我应该如何配置POJO以便我能正确解析XML?

dog*_*ane 86

strict在Root批注中设置为false以忽略未出现在类中的任何XML元素或属性.

@Root(strict=false)
Run Code Online (Sandbox Code Playgroud)

或者,strict在读取序列化程序中的xml时设置 为false :

Root root = serializer.read(Root.class, source, false);
Run Code Online (Sandbox Code Playgroud)


小智 5

您可以将(required = false)添加到单个元素

@Element(required=false)
private int statusCode;
Run Code Online (Sandbox Code Playgroud)

如果你有更多的元素使用

 @Root(strict=false)
Run Code Online (Sandbox Code Playgroud)