我现在正在学习春季批次。我想使用StaxEventItemReaderto读取xml文件 所以我只是尝试在java透视图中的独立java文件中使用它,并使用所有必需的spring jar。
我想知道如何确定它是否已读取值以及已读取的值。简而言之,我想在控制台中打印读取值。我怎么能在独立的java文件中做到这一点?
main(){
StaxEventItemReader<Student> xmlFileReader = new StaxEventItemReader<Student>();
xmlFileReader.setResource(new ClassPathResource("/Student.xml"));
xmlFileReader.setFragmentRootElementName("Marks");
Jaxb2Marshaller medicareMarshaller = new Jaxb2Marshaller();
medicareMarshaller.setClassesToBeBound(Student.class);
xmlFileReader.setUnmarshaller(medicareMarshaller);
System.out.println(xmlFileReader. ?);
}
请帮助我了解如何打印读取值。如果我的内容不清楚,我道歉。提前致谢。
答案 0 :(得分:0)
请尝试下面的改编代码。 通常,如果要测试SpringBatch组件而不将它们实例化为Spring-Beans( - >通过直接调用der Constructor),则应在调用所有set-Methods后调用“afterPropertiesSet()”方法。 / p>
接下来,根据您想直接测试的读者/作者,您必须调用reader.open(new ExecutionContext())。
之后,你可以调用read() - 方法,然后按项目返回项目。
main(){
StaxEventItemReader<Student> xmlFileReader = new StaxEventItemReader<Student>();
xmlFileReader.setResource(new ClassPathResource("/Student.xml"));
xmlFileReader.setFragmentRootElementName("Marks");
Jaxb2Marshaller medicareMarshaller = new Jaxb2Marshaller();
medicareMarshaller.setClassesToBeBound(Student.class);
xmlFileReader.setUnmarshaller(medicareMarshaller);
xmlFileReader.afterPropertiesSet(); // in the case of StaxEventItemReader not really necessary
xmlFileReader.open(new ExecutionContext()); // does some initialisation, so you need to call it
Studen student = null;
while(student = xmlFileReader.read() != null) {
System.out.println(student...);
}
xmlFileReader.close();