问题描述
我正在使用 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 (将#修改为@)