繁体   English   中英

JAXB:当有多个 XSD 时,如何知道要解组到哪个 Java class?

[英]JAXB: How to know which Java class to unmarshal to when there are multiple XSDs?

我有几个 XSD 文件,我使用 XJC 处理这些文件以生成 Java 类。

I would like to read an arbitrary XML file, and based on the contents of the XML file, convert it to one of the generated Java class.

是否可以在不检查 XML 本身的内容并让 JAXB 框架完成所有工作的情况下做到这一点?

例如,假设我有以下 XSD 文件:

狗.xsd 猫.xsd

我使用 XJC 编译它们以生成 Dog.java 和 Cat.java。

我现在阅读了一些任意的 XML,并根据它匹配的模式创建了 Dog 或 Cat 的实例。

谢谢。

XJC 基于模式中的类型生成类,而不是模式本身。 并且它将生成的类放入基于该目标命名空间的包中。 如果将多个模式加载到 JAXBContext 中,它将自动解组为正确的类型。 这几乎就是 JAXB 的重点。 如果您的两个模式在同一名称空间中具有相同名称的类型,则 XJC 将失败。

一个可能有效的简单解决方案是尝试解组其中一个,如果它没问题,那么它是正确的,如果你得到一个例外,它是你应该使用的第二个。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM