如何让 XStreamMarshaller 跳过未知绑定? [英] How can I make a XStreamMarshaller skip unknown binding?

查看:44
本文介绍了如何让 XStreamMarshaller 跳过未知绑定?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在研究 Spring-Batch 程序.我使用 XStreamMarshaller 解组 XML 文件.

I'm working on a Spring-Batch program. I unmarshalls XML files with XStreamMarshaller.

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

How can I make a XStreamMarshaller to skip any unknown+unannoated fields?

<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元素.

The problem is that some new xml elements will be introduced in some other time.

我不想(实际上我不能)向我的模型添加额外的字段.

I don't want to (actually I can't) add extra fields to my Model.

推荐答案

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

I'm answering for my own question. The solution is where @biziclop linked. (disclaimer: I also answered the same answer on that post).

public class ExtendedXStreamMarshaller extends XStreamMarshaller {

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

这篇关于如何让 XStreamMarshaller 跳过未知绑定?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆