Я пытаюсь прочитать XML-файл, используя класс Jaxb2Marshaller. Насколько я понимаю, это должно выдать исключение, потому что я передаю XML, который не в ожидаемом формате, но не выдает никаких исключений.
Я хочу перехватить исключение и выполнить дальнейшие шаги/ логика, основанная на полученном исключении.
Может ли кто-нибудь объяснить, почему метод unmarshaller класса Jaxb2Marshaller не выдает никаких исключений, даже если я не передаю ожидаемый XML-файл (XML-файл, который не содержит никакой информации о сотрудниках. Пример) Файл .xml — это совершенно другой файл структуры XML, который не встроен в класс Emmployee.java) для демаршаллового метода?
//this the method which reading XML file.
@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 ... ml-file-is
Метод демаршаллера Jaxb2Marshaller не выдает никаких исключений, даже если XML-файл не в ожидаемом формате ⇐ JAVA
Программисты JAVA общаются здесь
1727703043
Anonymous
Я пытаюсь прочитать XML-файл, используя класс Jaxb2Marshaller. Насколько я понимаю, это должно выдать исключение, потому что я передаю XML, который не в ожидаемом формате, но не выдает никаких исключений.
Я хочу перехватить исключение и выполнить дальнейшие шаги/ логика, основанная на полученном исключении.
Может ли кто-нибудь объяснить, почему метод unmarshaller класса Jaxb2Marshaller не выдает никаких исключений, даже если я не передаю ожидаемый XML-файл (XML-файл, который не содержит никакой информации о сотрудниках. Пример) Файл .xml — это совершенно другой файл структуры XML, который не встроен в класс Emmployee.java) для демаршаллового метода?
//this the method which reading XML file.
@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
Подробнее здесь: [url]https://stackoverflow.com/questions/79039138/jaxb2marshallers-unmarshaller-method-not-giving-any-exception-even-xml-file-is[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия