如何使XStreamMarshaller跳过未知绑定?

时间:2015-02-12 13:02:00

标签: spring-batch xstream

我正在开发一个Spring-Batch程序。我使用XStreamMarshaller解组XML文件。

如何让XStreamMarshaller跳过任何未知+未标注的字段?

<bean id="merge.reader.item"
      class="org.springframework.batch.item.xml.StaxEventItemReader">
  <property name="fragmentRootElementName" value="xml-fragment"/>
  <property name="unmarshaller" ref="merge.reader.unmarshaller"/>
</bean>
<bean id="merge.reader.unmarshaller"
      class="org.springframework.oxm.xstream.XStreamMarshaller">
  <property name="aliases" ref="merge.reader.binder"/>
  <property name="autodetectAnnotations" value="true"/>
</bean>
<util:map id="merge.reader.binder">
  <entry key="xml-fragment" value="path.to.my.Model"/>
</util:map>
public class Model {

    @XStreamAlias(value = "one")
    private String one;

    @XStreamAlias(value = "other")
    private String other;
}

问题是一些新的xml元素将在其他时间推出。

我不想(实际上我不能)在我的模型中添加额外的字段。

1 个答案:

答案 0 :(得分:2)

我正在回答我自己的问题。解决方案是@biziclop链接的地方。 (免责声明:我也在该帖子上回答了相同的答案)。

public class ExtendedXStreamMarshaller extends XStreamMarshaller {

    @Override
    protected void configureXStream(final XStream xstream) {
        super.configureXStream(xstream);
        xstream.ignoreUnknownElements(); // will it blend?
    }
}