Я пишу пакетное задание для разбора XML, извлечения полей и сохранения их в Databse.При синтаксическом анализе XML, он выбирает 2 корневых элемента, но оставляет все поля пустыми, поэтому в моей базе данных у меня 2 записи будут нулевые поля.Кажется, не может понять, почему он не может читать элементы ... TIA
@Bean
fun xmlFileItemReader(environment: Environment): ItemReader<ConsumerInfo> {
val xmlFileReader = StaxEventItemReader<ConsumerInfo>()
xmlFileReader.setResource(ClassPathResource(environment.getRequiredProperty(PROPERTY_XML_SOURCE_FILE_PATH)))
xmlFileReader.setFragmentRootElementName("ConsumerInfo")
val customerMarshaller = Jaxb2Marshaller()
customerMarshaller.setClassesToBeBound(ConsumerInfo::class.java)
xmlFileReader.setUnmarshaller(customerMarshaller)
return xmlFileReader
}
Класс данных Kotlin
@XmlRootElement(name = "ConsumerInfo", namespace = *Its correct*)
@XmlAccessorType(XmlAccessType.FIELD)
data class ConsumerInfo(
@XmlElement(name = "LastName")
var lastName: String? = null,
@XmlElement(name = "FirstName")
var firstName: String? = null,
@XmlElement(name = "GenerationCode")
var generationCode: String? = null,
@XmlElement(name = "Street")
var street: String? = null,
@XmlElement(name = "City")
var city: String? = null,
@XmlElement(name = "State")
)
XML
<ConsumerInfo>
<LastName>lastn</LastName>
<FirstName>firstn</FirstName>
<GenerationCode>g</GenerationCode>
<Street>strt</Street>
<City>cty</City>
<State>st</State>
</ConsumerInfo>
<ConsumerInfo>
<LastName>last</LastName>
<FirstName>first</FirstName>
<GenerationCode>gc</GenerationCode>
<Street>street</Street>
<City>city</City>
<State>state</State>
</ConsumerInfo>
compile('org.springframework.boot:spring-boot-starter-batch')
compile('org.springframework.boot:spring-boot-starter-jdbc')
compile('com.fasterxml.jackson.module:jackson-module-kotlin')
// https://mvnrepository.com/artifact/org.springframework/spring-oxm
compile group: 'org.springframework', name: 'spring-oxm', version: '5.1.6.RELEASE'
compile("org.jetbrains.kotlin:kotlin-stdlib-jdk8")
compile("org.jetbrains.kotlin:kotlin-reflect")
compile ('org.postgresql:postgresql')
testCompile('org.springframework.boot:spring-boot-starter-test')
}