Чтение XML-файла Spring Batch. Метод unmarshaller Jaxb2Marshaller не выдает никаких исключений, даже если файл XML не в JAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Чтение XML-файла Spring Batch. Метод unmarshaller Jaxb2Marshaller не выдает никаких исключений, даже если файл XML не в

Сообщение Anonymous »

Я пытаюсь прочитать 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
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «JAVA»