java - JAXB:当有多个 XSD 时,如何知道要解码到哪个 Java 类?

标签 java jaxb

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

我想读取任意一个 XML 文件,并根据 XML 文件的内容,将其转换为生成的 Java 类之一。

是否可以在不检查 XML 本身的内容并让 JAXB 框架完成所有工作的情况下执行此操作?

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

狗.xsd 猫.xsd

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

我现在读取一些任意 XML,并创建 Dog 或 Cat 的实例,具体取决于它匹配的模式。

谢谢。

最佳答案

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

关于java - JAXB:当有多个 XSD 时,如何知道要解码到哪个 Java 类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6721381/

相关文章:

java - Map.containsValue() 返回 false

java - 无法使用 JAXB 生成枚举类

java - 不区分大小写 Jaxb2Marshaller

java - JAXB 的 @XmlElement(name ="") 在 Mule 中不起作用

java - Hibernate 错误地映射 BigDecimal

java - 为什么 == 在 Java 中比 postfix++ 有更高的优先级?

java - JAXB 可以在基类中初始化值吗?

java - 当从模式解码时,序列的顺序在 jaxb 中很重要

java - 没有得到正确的温度转换输出

java - 在 Android 应用程序中使用 facebook 登录