微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何基于xsd决定要在jaxb2marshaller中扫描的正确包

如何解决如何基于xsd决定要在jaxb2marshaller中扫描的正确包

我正在使用 spring jaxb2marshaller 进行编组和解组。它适用于版本 10,但现在我必须支持 xsd 架构的两个不同版本(比如版本 01 和 10)。如何设置 jaxb2marshaller 基于 xsd 版本扫描包。我的解析代码

public void parseSampleFile(String fileLocation) throws FileNotFoundException,XMLStreamException {
    InputStream inputStream = getFilePathInputStream(fileLocation);
    XMLInputFactory xmlInputFactory = XMLInputFactory.newInstance();
    XMLStreamReader xsr = xmlInputFactory.createXMLStreamReader(inputStream);
    XMLReaderWithoutNamespace xmlStreamReader = new XMLReaderWithoutNamespace(xsr);
    StAXSource stAXSource = new StAXSource(xmlStreamReader);
    // skip to the first element to reach Document

    while (xmlStreamReader.hasNext() && !xmlStreamReader.isstartElement()) {
        xmlStreamReader.next();
    }

    while (xmlStreamReader.getEventType() == XMLStreamConstants.START_ELEMENT) {
        switch (xmlStreamReader.getLocalName()) {
            case "Hdr":
                header = (Header) jaxb2Marshaller.unmarshal(stAXSource);
                xmlStreamReader.nextTag();
                break;
            case "SomeInf":
                instruction = (Instruction) jaxb2Marshaller.unmarshal(stAXSource);
                xmlStreamReader.nextTag();
                break;
            default:
                xmlStreamReader.nextTag();
        }
    }
}

我在配置文件中将 jaxb2marshler 设置为

@Bean
Jaxb2Marshaller jaxb2Marshaller() {
    Jaxb2Marshaller jaxb2Marshaller = new Jaxb2Marshaller();
    jaxb2Marshaller.setPackagesToScan("com.sample.version10.model");
    return jaxb2Marshaller;
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。