Kotlin - JAXB 解组导致错误

问题描述 投票:0回答:1

我在解组时遇到了大问题。 我使用 xsd 文件中的 xjc 数据类生成。 这似乎工作没有任何问题。

现在我在我的 Kotlin 项目中尝试了这个

val jaxbContext = JAXBContext.newInstance("org.inek.xml.schema.standortverzeichnis")//.newInstance(Standortverzeichnis::class.java)
val unmarshaller = jaxbContext.createUnmarshaller()

当我运行代码时,我收到以下错误消息:

Exception in thread "main" javax.xml.bind.JAXBException: "org.inek.xml.schema.standortverzeichnis" does not contain ObjectFactory.class or jaxb.index

我不知道代码有什么问题。 xjc 的导出位于与 main.kt 相同的目录中。 该目录名为“org.inek.xml.schema.standortverzeichnis”。 该目录包含所有数据类,包括 ObjectFactroy 和 package-info.java

感谢您的帮助

xml kotlin xsd jaxb jaxb2-basics
1个回答
0
投票

无论是由使用的工具指定还是从 XSD 中声明的命名空间派生,从 XSD 生成 java 类都应在包含

ObjectFactory
类的基础包中生成类。

例如,将

targetNamespace
声明为
targetNamespace="http://po.example.org"
,它将生成类似 here

的 java 类

然后,在我的代码中(这里是kotlin语法,但Java应该是相同的),我将通过引用基础包

jaxbContext
来实例化
org.example.po
,其中包含
ObjectFactory

val jaxbContext = JAXBContext.newInstance("org.example.po")

然后,您可以将此示例改编为您的代码,以找到最佳的包来实例化您的

JAXBContext

问候,

劳伦特

© www.soinside.com 2019 - 2024. All rights reserved.