【发布时间】:2019-10-15 14:57:19
【问题描述】:
我有一个无法更改的第三方 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;
}
我有很多不能忽略的开发限制,所以如果可以忽略这个字符,我只能在创建解组器时这样做。
现在解组中断,因为<ID><![CDATA[888711173110]]></ID> 包含无效字符。我想忽略它,好像 CDATA 块包含 888711173110
【问题讨论】:
标签: java spring xml-parsing