我将使用具有以下结构的XML
<xml>
<Header><Type>..</Type>...</Header>
<Data>...</Data>
</xml>
基于<Type>
值,<Data>
元素将具有不同的元素。例如
<xml>
<Header><Type>Int</Type></Header>
<Data><Integer>10<Integer></Data>
</xml>
<xml>
<Header><Type>Str</Type></Header>
<Data><String>JAXB Test</String></Data>
</xml>
Java类将是
class TypeEntity { }
class IntEntity extends TypeEntity { }
class StrEntity extends TypeEntity { }
我想使用JAXB来解析xml并相应地创建子类。我怎么能这样做?请帮帮我。
编辑:实际上我会从Web服务中获取这些XML。收到后我需要将这些转换为Java类。现在我使用DOM解析器来识别Type并实例化Java子类。我想知道有没有更好的方法来做到这一点。感谢答案 0 :(得分:0)
您需要为XML文档编写XSD架构,JAXB可以从中生成对象。
如果您不熟悉XSD,请检查this。
或者您可以使用一些XML工具从XML生成模式。只需将XML搜索到XSD等等。
如果您拥有正确的文档XSD架构,则需要使用某种脚本来使用JAXB生成对象。我更喜欢ANT。
示例:
<taskdef name="xjc" classname="com.sun.tools.xjc.XJCTask">
<classpath>
<fileset dir="${lib.dir}" includes="*.jar" excludes="ant.jar"/>
</classpath>
</taskdef>
<xjc schema="${src.main.resources}/YourXSDSchema.xsd" destDir="${your.output.dir}" package="your.package">
<produces dir="${your.output.dir}/your/package" includes="**/*" />
</xjc>
然后编译生成的类,将它们打包到.jar
中就可以了。