Kotlin - JAXB 解组导致错误

Kotlin - JAXB unmarshalling leads to error

提问人:Pferdesalbe 提问时间:9/29/2023 更新时间:11/13/2023 访问量:21

问:

我在解组时遇到了大问题。 我从我的 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

评论


答:

0赞 Laurent Schoelens 11/13/2023 #1

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

例如,将声明为 ,它将生成如下所示的 java 类targetNamespacetargetNamespace="http://po.example.org"

然后,在我的代码中(这里是 kotlin 语法,但 Java 应该是相同的),我将通过引用 基础包 来实例化 ,其中包含其中的类jaxbContextorg.example.poObjectFactory

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

然后,您可以根据您的代码调整此示例,以找到实例化您的最佳包JAXBContext

问候

劳伦