使用可选值批处理 XML 文件?
Batch processing of the XML file with optional values?
我正在使用 BatchProcessing 进程解析 xml 文件,我只想将该字段设为可选以从 StaxEventItemReader
读取,请检查下面的代码行。
StaxEventItemReader<DataWrapper> reader = new StaxEventItemReader<DataWrapper>();
reader.setResource(new PathResource(filePath));
reader.setFragmentRootElementName("MY_LIST");
Map<String, Class<?>> aliases = new HashMap<>();
aliases.put("MY_LIST", DataWrapper.class);
XStreamMarshaller xStreamMarshaller = new XStreamMarshaller();
xStreamMarshaller.setAliases(aliases);
xStreamMarshaller.getXStream().addPermission(AnyTypePermission.ANY);
reader.setUnmarshaller(xStreamMarshaller);
SynchronizedItemStreamReader<DataWrapper> synchronizedItemStreamReader = new SynchronizedItemStreamReader<>();
synchronizedItemStreamReader.setDelegate(reader);
return synchronizedItemStreamReader;
如何为字段3设置我的reader的字段选项,请查看下面的XMl
<?xml version="1.0" encoding="utf-8"?>
<Fields xmlns:xsi="http://www.wwww.org/2001/XMLSchema-instance" >
<FileCreationDate>2021-04-30T00:15:55.0725852-07:00</FileCreationDate>
<MY_LIST>
<Field 1>Fileld 1 data</Field 1>
<Field 2>Fileld 2 data</Field 2>
<Field 3>Fileld 3 data</Field 3> /// I WANT TO PUT IT AS THE OPTIONAL WHILE READING
</MY_LIST>
</Fields>
我想要 Field 3 可选,因为它有时会出现。但是现在在 BatchProcessing 中,必须解析所有 field.I 我跟随此导师完成我的 BatchProcessing 任务,请检查一次 Click here
感谢所有建议,我已经通过 XStream
class 的 ignoreUnknownElements();
解决了解决方案。
自 XStream 1.4.5 以来,在编组器声明期间使用 ignoreEnknownElements() 方法就足够了:
XStreamMarshaller marshaller = new XStreamMarshaller();
marshaller.getXStream().ignoreUnknownElements();
我正在使用 BatchProcessing 进程解析 xml 文件,我只想将该字段设为可选以从 StaxEventItemReader
读取,请检查下面的代码行。
StaxEventItemReader<DataWrapper> reader = new StaxEventItemReader<DataWrapper>();
reader.setResource(new PathResource(filePath));
reader.setFragmentRootElementName("MY_LIST");
Map<String, Class<?>> aliases = new HashMap<>();
aliases.put("MY_LIST", DataWrapper.class);
XStreamMarshaller xStreamMarshaller = new XStreamMarshaller();
xStreamMarshaller.setAliases(aliases);
xStreamMarshaller.getXStream().addPermission(AnyTypePermission.ANY);
reader.setUnmarshaller(xStreamMarshaller);
SynchronizedItemStreamReader<DataWrapper> synchronizedItemStreamReader = new SynchronizedItemStreamReader<>();
synchronizedItemStreamReader.setDelegate(reader);
return synchronizedItemStreamReader;
如何为字段3设置我的reader的字段选项,请查看下面的XMl
<?xml version="1.0" encoding="utf-8"?>
<Fields xmlns:xsi="http://www.wwww.org/2001/XMLSchema-instance" >
<FileCreationDate>2021-04-30T00:15:55.0725852-07:00</FileCreationDate>
<MY_LIST>
<Field 1>Fileld 1 data</Field 1>
<Field 2>Fileld 2 data</Field 2>
<Field 3>Fileld 3 data</Field 3> /// I WANT TO PUT IT AS THE OPTIONAL WHILE READING
</MY_LIST>
</Fields>
我想要 Field 3 可选,因为它有时会出现。但是现在在 BatchProcessing 中,必须解析所有 field.I 我跟随此导师完成我的 BatchProcessing 任务,请检查一次 Click here
感谢所有建议,我已经通过 XStream
class 的 ignoreUnknownElements();
解决了解决方案。
自 XStream 1.4.5 以来,在编组器声明期间使用 ignoreEnknownElements() 方法就足够了:
XStreamMarshaller marshaller = new XStreamMarshaller();
marshaller.getXStream().ignoreUnknownElements();