Как выбрать правильный пакет для сканирования в jaxb2marshaller на основе xsd

#java #xml #spring #spring-oxm

Вопрос:

Я сортирую и отменяю сортировку, используя spring jaxb2marshaller. он работает для версии 10, за исключением того, что теперь мне приходится поддерживать две разные версии (скажем, версии 01 и 10) схемы xsd. как настроить 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() amp;amp; !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;
}
 

Комментарии:

1. Просто отсканируйте оба пакета.