Java 如何在复杂xml的Spring批处理中使用StatxeventitemReader
请帮我写一下ItemReader()Java 如何在复杂xml的Spring批处理中使用StatxeventitemReader,java,spring,jaxb,spring-batch,xmlreader,Java,Spring,Jaxb,Spring Batch,Xmlreader,请帮我写一下ItemReader() 05/28/2016 75 1. A2334549 89890734548557 01 XXXXX B F 纳兹 阿福 H 04/02/1990 45673739A 894567893 09678546 N 家 英迪拉纳加尔路2226号 诺伊达 德里 525001 印度 邮寄 英迪拉纳加尔路2226号 诺伊达 德里 525001 印度 40 67894 玉8883 009 104 000987666 B004 0004 789034 ******* 09/
05/28/2016
75
1.
A2334549
89890734548557
01
XXXXX
B
F
纳兹
阿福
H
04/02/1990
45673739A
894567893
09678546
N
家
英迪拉纳加尔路2226号
诺伊达
德里
525001
印度
邮寄
英迪拉纳加尔路2226号
诺伊达
德里
525001
印度
40
67894
玉8883
009
104
000987666
B004
0004
789034
*******
09/01/2016/01/2016
12/31/2016
100
1.
08/11/2016
02/01/2008
02/01/2008
08/16/2016
s
08/01/2016
D
-------
------
-------
我有jaxb为文件、事务、成员详细信息、成员数据、地址、代理信息、包、PartD、LICSInfo、MedihealthData、PartA、PartB、ESignDate、EnrollmentDate、BillingData生成的类
现在,在下面的ItemReader方法中,我应该使用什么样的类名来代替“?”。请帮帮我
public ItemReader<?> fileXmlReader(@Value("#{stepExecution}") StepExecution stepExecution) {
StaxEventItemReader<?> xmlFileReader = new StaxEventItemReader<>();
xmlFileReader.setResource(new ClassPathResource("/File.xml"));
xmlFileReader.setFragmentRootElementNames( new String[] {?}); (or )
xmlFileReader.setFragmentRootElementName(?)
Jaxb2Marshaller marshaller = new Jaxb2Marshaller();
marshaller.setClassesToBeBound(?);
xmlFileReader.setUnmarshaller(marshaller);
return xmlFileReader;
}
public ItemReader fileXmlReader(@Value(#{stepExecution})stepExecution-stepExecution){
statxeventitemreader xmlFileReader=新的statxeventitemreader();
setResource(新类路径资源(“/File.xml”);
setFragmentRootElementNames(新字符串[]{?});(或)
setFragmentRootElementName(?)
Jaxb2Marshaller-marshaller=新的Jaxb2Marshaller();
marshaller.setClassesToBeBound(?);
setUnmarshaller(marshaller);
返回xmlFileReader;
}
我发现以下解决方案可能对其他人有所帮助:
@Bean
public StaxEventItemReader<Entity> reader() {
XStreamMarshaller unmarshaller = new XStreamMarshaller();
Map<String, Class> aliases = new HashMap<>();
aliases.put("File", Entity.class);
unmarshaller.setAliases(aliases);
StaxEventItemReader<Customer> reader = new StaxEventItemReader<>();
reader.setResource(new ClassPathResource("/data/file.xml"));
reader.setFragmentRootElementName("file");
reader.setUnmarshaller(unmarshaller);
return reader;
}
@Bean
public StateVentitemReader(公共文件阅读器){
XStreamMarshaller unmarshaller=新的XStreamMarshaller();
映射别名=新HashMap();
别名.put(“文件”,Entity.class);
解组器。设置别名(别名);
statxeventitemreader reader=新的statxeventitemreader();
setResource(新类路径资源(“/data/file.xml”);
setFragmentRootElementName(“文件”);
reader.setUnmarshaller(unmarshaller);
返回读取器;
}
Any 1请帮助我用正确的类名填写ItemReader方法“”,以便获得正确的输出
@Bean
public StaxEventItemReader<Entity> reader() {
XStreamMarshaller unmarshaller = new XStreamMarshaller();
Map<String, Class> aliases = new HashMap<>();
aliases.put("File", Entity.class);
unmarshaller.setAliases(aliases);
StaxEventItemReader<Customer> reader = new StaxEventItemReader<>();
reader.setResource(new ClassPathResource("/data/file.xml"));
reader.setFragmentRootElementName("file");
reader.setUnmarshaller(unmarshaller);
return reader;
}