2015-02-12 4 views
1

Я работаю над программой Spring-Batch. Я удаляю XML-файлы с помощью XStreamMarshaller.Как я могу заставить 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 будут введены в другое время.

Я не хочу (на самом деле я не могу) добавлять дополнительные поля в свою модель.

+1

Если у вас есть контроль над созданием 'экземпляра XStream', это ваш ответ: http://stackoverflow.com/questions/4409717/java-xstream-ignore-tag-that-doesnt-exist -в-XML – biziclop

ответ

1

Я отвечаю на свой вопрос. Решение - это где @biziclop. (отказ от ответственности: я также ответил на тот же ответ на этом посту).

public class ExtendedXStreamMarshaller extends XStreamMarshaller { 

    @Override 
    protected void configureXStream(final XStream xstream) { 
     super.configureXStream(xstream); 
     xstream.ignoreUnknownElements(); // will it blend? 
    } 
} 
Смежные вопросы