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 を解析し、それに応じてサブクラスを作成したいと考えています。どうすればこれを行うことができますか?私を助けてください。

編集: 実際には、これらの XML を Web サービスから取得します。受け取った後、これらを Java クラスとして変換する必要があります。現在、DOM パーサーを使用して Type を識別し、Java サブクラスをインスタンス化しています。これを行うより良い方法があるかどうか知りたいです。ありがとう

4

1 に答える 1

0

JAXB がそこからオブジェクトを生成できる XML 文書の XSD スキーマを作成する必要があります。

XSD に慣れていない場合は、これを確認してください。

または、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

于 2012-06-06T16:03:36.367 に答える