我怎样才能让一个XStreamMarshaller跳过未知的约束力?(How can I make

2019-10-21 20:52发布

我工作的一个Spring批处理程序。 我XML解组文件与XStreamMarshaller。

我怎样才能让一个XStreamMarshaller跳过任何未知+ unannoated领域?

<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元素会在某个时间推出。

我不想(其实我也不能)额外的字段添加到我的模型。

Answer 1:

我回答我自己的问题。 该解决方案是其中@biziclop链接。 (免责声明:我还回答了那个帖子相同的答案)。

public class ExtendedXStreamMarshaller extends XStreamMarshaller {

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


文章来源: How can I make a XStreamMarshaller skip unknown binding?