spring jaxb2marshaller - 如何根据模式进行编组?

时间:2015-11-03 23:06:21

标签: java spring

我正在努力学习如何编组&使用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?

非常感谢!

克里斯

1 个答案:

答案 0 :(得分:0)