映射自定义对象需要JAXB帮助

时间:2017-10-11 18:30:36

标签: java xml jaxb

我从某个服务器接收XML。我需要将xml解组为java对象并将java对象编组为xml。

我怎么能这样做?。

以下是我的XML格式。

<parent>
    <child>
        <order>
            <row no="1">
                <AB val="ID">205</AB>
                <AB val="NAME">JS</AB>
                <AB val="DETAILS">
                    <prod no="1">
                        <AB val="PRODID">205</AB>
                        <AB val="NAME">Prod1</AB>
                    </prod>
                    <prod no="2">
                        <AB val="PRODID">206</AB>
                        <AB val="NAME">Prod2</AB>
                    </prod>
                </AB>
            </row>
        </order>
    </child>
</parent>

1 个答案:

答案 0 :(得分:0)

您可以使用jaxb2-maven-plugin xjc目标在构建期间从xml架构(xsd)生成java类(您可以通过任何在线生成器从xml生成xml架构,例如使用{{3 }})。

你也可以在控制台中使用xjc并事先生成你的类,它内置在java中(参见<your jdk path>/bin/xjc.exe)。

然后简单地使用marshaller / unmarshaller来完成工作,例如:

JAXBContext jaxbContext = JAXBContext.newInstance(YourClazz.class);
Unmarshaller jaxbUnmarshaller = jaxbContext.createUnmarshaller();
YourClazz yourclazz = (YourClazz) jaxbUnmarshaller.unmarshall(new File("path/to/your/xml"));

btw我建议缓存JAXBContext个实例,使用Map<Class<?>, JAXBContext>。不要缓存marshaller / unmarshaller。

相关问题