У меня есть сторонний XML-файл, который я не могу изменить. Одно из полей в XML имеет символ ESC в середине значения поля. Я хочу добавить свойство unmarshal, которое просто игнорирует все найденные им поля символов ESC.
Возможно ли это сделать? Если да, то как?
Это мой поток чтения, который я использую для демонтажа своего пользовательского класса TransactionType
. Кроме того, последнее не может быть изменено.
@Bean
public MultiResourceItemReader<TransactionType> customItemReader() {
Jaxb2Marshaller marshaller = new Jaxb2Marshaller();
marshaller.setCheckForXmlRootElement(false);
marshaller.setClassesToBeBound(TransactionType.class);
marshaller.supports(TransactionType.class);
StaxEventItemReader<TransactionType> posLogStaxEventItemReader = new StaxEventItemReader<>();
posLogStaxEventItemReader.setUnmarshaller(marshaller);
posLogStaxEventItemReader.setFragmentRootElementName("{http://www.nrf-arts.org/IXRetail/namespace/}Transaction");
MultiResourceItemReader<TransactionType> transactionReader = new MultiResourceItemReader<>();
transactionReader.setDelegate(posLogStaxEventItemReader);
return transactionReader;
}
У меня есть много ограничений развития, которые я не могу игнорировать, поэтому, если возможно игнорирование этого символа, я могу сделать это только при создании unmarshaller.
Сейчас немаршал прерывается, потому что <ID><![CDATA[888711173110]]></ID>
содержит недопустимые символы. Я хочу игнорировать это, как если бы блок CDATA содержал 888711173110