Я пытаюсь прочитать XML-файл, используя класс Jaxb2Marshaller. Когда я пытаюсь прочитать XML-файл в ожидаемом формате (employee.xml в коде ниже), где я передаю другой XML-файл, который не содержит данных о сотрудниках, и этот XML-файл не соответствует формату сотрудников.
поэтому, насколько я понимаю, оно должно выдавать исключение, когда я передаю случайный XML (sample.xml в примере кода ниже).
Я хочу перехватить исключение и выполнить дальнейшие действия шаги/логика на основе полученного исключения.
Может ли кто-нибудь объяснить, почему метод unmarshaller класса Jaxb2Marshaller не выдает никаких исключений, даже если я не передаю ожидаемый XML-файл (XML-файл, который не содержит никакой информации о сотрудниках) Файл Sample.xml — это совершенно другой файл структуры XML, который не встроен в класс Emmployee.java)? Ниже мой код.
@SpringBootApplication
public class SpringBatchXmlApplication {
@Bean
@StepScope
public StaxEventItemReader reader() {
StaxEventItemReader result = null;
Jaxb2Marshaller unmarshaller = new Jaxb2Marshaller();
unmarshaller.setClassesToBeBound(Employee.class);
result = new StaxEventItemReaderBuilder()
.name("employeeReader")
//Sample.xml contains different structure not like Employee. However code ran successfully without any exception but expected to throw exception.
.resource(new ClassPathResource("sample.xml"))
//With Employee.xml file able to read the file and written to output file as expected
//.resource(new ClassPathResource("employee.xml"))
.addFragmentRootElements("employee")
.unmarshaller(unmarshaller)
.build();
int i =0 ;
return result;
}
@Bean
public StaxEventItemWriter writer() {
StaxEventItemWriter result = null;
Jaxb2Marshaller marshaller = new Jaxb2Marshaller();
marshaller.setClassesToBeBound(Employee.class);
result = new StaxEventItemWriterBuilder()
.name("employeeWriter")
.resource(new FileSystemResource("output.xml"))
.marshaller(marshaller)
.rootTagName("employees")
.build();
return result;
}
@Bean
public ItemProcessor processor() {
return employee -> {
// Example processor logic
employee.setName(employee.getName().toUpperCase());
System.out.println("Name: " + employee.getName() + ", Department: " + employee.getDepartment() );
return employee;
};
}
@Bean
Job job(Step step1, JobRepository jobRepository) {
var builder = new JobBuilder("job", jobRepository);
return builder
.start(step1)
.build();
}
@Bean
public Step step1(StaxEventItemReader reader,
StaxEventItemWriter writer,
JobRepository jobRepository,
PlatformTransactionManager transactionManager) {
return new StepBuilder("step1", jobRepository)
.chunk(1, transactionManager)
.reader(reader)
.processor(processor())
.writer(writer)
.build();
}
public static void main(String[] args) {
SpringApplication.run(SpringBatchXmlApplication2.class, args);
}
}
///Employee.java Class
@XmlRootElement(name = "employee")
public class Employee {
private int id;
private String name;
private String department;
public Employee() {
}
public Employee(int id, String name, String department) {
this.id = id;
this.name = name;
this.department = department;
}
@XmlElement(name = "id")
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
@XmlElement(name = "name")
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@XmlElement(name = "department")
public String getDepartment() {
return department;
}
public void setDepartment(String department) {
this.department = department;
}
@Override
public String toString() {
return "Employee [id=" + id + ", name=" + name + ", department=" + department + "]";
}
}
//sample.xml file
SAMPLE
SAMPLE2
SAMPLE3
HAPPY WEEKEND
//employee.xml File
1
John Franklin
Sales
2
Thomas Smith
HR
3
Adams Jefferson
Accounts
Подробнее здесь: https://stackoverflow.com/questions/790 ... t-giving-a
Чтение XML-файла Spring Batch. Метод unmarshaller Jaxb2Marshaller не выдает никаких исключений, даже если файл XML не в ⇐ JAVA
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Как разупорядочить XML без пространства имен с помощью Jakarta XML Unmarshaller?
Anonymous » » в форуме JAVA - 0 Ответы
- 20 Просмотры
-
Последнее сообщение Anonymous
-