java - JAXB:当我们有很多类型的 xmlMessage 时,如何在 xmlMessage 与其 Java 类之间进行映射以进行解码

标签 java xsd jaxb unmarshalling xjc

我有 XSD 文件,我已使用 XJC 处理该文件以生成 Java 类。

<?xml version="1.0" encoding="UTF-8"?>
<schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.example.org/Integratipn_Zip" xmlns:tns="http://www.example.org/Integratipn_Zip" elementFormDefault="qualified">

<element name="saveArchiveRequest">
    <complexType>
        <attribute name="identifiant" type="string"></attribute>
        <attribute name="idArchive" type="string"></attribute>
        <attribute name="emplacement" type="anyURI"></attribute>
    </complexType>
</element>

<element name="getArchiveRequest">
    <complexType>
        <attribute name="identifiant" type="string"></attribute>
        <attribute name="idArchive" type="string"></attribute>
    </complexType>
</element>
</schema>

我想读取 XML 消息,并将其转换为生成的 Java 类之一。 但不使用此方法:

if (xmlMessage.contains("saveArchiveRequest")){
            JAXBContext jaxbContext = JAXBContext.newInstance(SaveArchiveRequest.class);
            Unmarshaller jaxbUnmarshaller = jaxbContext.createUnmarshaller();
            SaveArchiveRequest object = (SaveArchiveRequest) jaxbUnmarshaller.unmarshal(reader);
            return object;
        } else if (xml.contains("getArchiveRequest")) {
            JAXBContext jaxbContext = JAXBContext.newInstance(GetArchiveRequest.class);
            Unmarshaller jaxbUnmarshaller = jaxbContext.createUnmarshaller();
            GetArchiveRequest object = (GetArchiveRequest) jaxbUnmarshaller.unmarshal(reader);
            return object;
        }

我知道存在一种方法可以做到这一点,无需检查 XML 消息的内容,并让 JAXB 框架直接从 xml 消息映射到正确的对象,或者类似的方法,可能使用外部映射文件。

有人可以帮我吗?

谢谢。

最佳答案

如果您在从 XML 模式生成的包名称上创建 JAXBContext,那么您就可以拥有一个能够解码任何 XML 文档的 JAXBContext。对应于 XML 架构中的全局 XML。

关于java - JAXB:当我们有很多类型的 xmlMessage 时,如何在 xmlMessage 与其 Java 类之间进行映射以进行解码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15864945/

相关文章:

java - 我怎样才能在java中获得一个数字的平方根的小数部分的64位?

java - 在 java 中以编程方式生成 XSD

JAXB 生成的类 : Ignore intermediate classes

java - 更改 IMAGE_CAPTURE Intent 的图片大小/分辨率

java - Eclipse MessageConsole : cannot generate clickable link as (Filename. java:LineNumber)

c# - XmlSchema.Read 无法正确加载 xsd

java - 我如何在 JAXB 中执行某些操作,例如忽略 xml 元素的顺序?

java - JAXBContext 初始化加速?

java - 输入文件流到字符串

xsd - "http://www.w3.org/2001/XMLSchema-instance"的 XSD 文件在哪里?