0

我将有一个具有以下结构的 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 解析器来识别类型并实例化 Java 子类。我想知道有没有更好的方法来做到这一点。谢谢

4

1 回答 1

0

您需要为您的 XML 文档编写 XSD 模式,以便 JAXB 可以从中生成对象。

如果您不熟悉 XSD,请查看

或者您可以使用一些 XML 工具从 XML 生成模式。只需搜索 XML 到 XSD 等。

当您拥有正确的文档 XSD 架构时,您需要使用某种脚本来使用 JAXB 生成对象。我更喜欢蚂蚁。

例子:

<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里面就可以了。

于 2012-06-06T16:03:36.367 回答