Игнорировать специальный символ ESC в XML Unmarshal Java Spring - PullRequest
0 голосов
/ 15 октября 2019

У меня есть сторонний 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

...