我正在努力学习如何编组&使用Spring将XML与/或Java代码解组。我的示例代码适用于根据XSD文件(用于验证)将XML文件解组到我的Java类中。
我所坚持的并没有找到太多关于如何根据XSD架构文件进行编组的信息?
代码提取是:
在applicationContext.xml文件中,我有:
<bean id="jaxb2Marshaller" class="org.springframework.oxm.jaxb.Jaxb2Marshaller">
<property name="packagesToScan" value="com.company" />
<property name="schema" value="file:test1.xsd" />
</bean>
我的主类引用了jaxb2Marshaller bean。
在我的主要课程中,我有这个写XML:
private void writeXML() {
crashScene.getWorkZoneInfo().getWorkZoneDetails().setWorkZoneSpeedLimit(45); // updates the data previously read in by unmarshalling.
FileOutputStream fos;
try {
fos = new FileOutputStream("test_output.xml");
marshaller.marshal(crashScene, new StreamResult(fos));
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (XmlMappingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
由于我在applicationContext中设置了一个模式,因此在尝试编写XML时会出现异常:
org.springframework.oxm.MarshallingFailureException: JAXB marshalling exception; nested exception is javax.xml.bind.MarshalException- with linked exception:
[org.xml.sax.SAXParseException; lineNumber: 0; columnNumber: 0; cvc-complex-type.2.4.a: Invalid content was found starting with element 'FormNum'. One of '{XmlSchemaVersion}' is expected.]
如果我尝试在不使用定义的模式的情况下编写XML,那么编组工作。
如何根据模式定义写出XML?
非常感谢!
克里斯