XMLからJaxbクラス群を自動生成する例

2010/03/16 14:10Update
TAGS: XML | Jaxb | Trang | ツール | サンプル | Java | Ant | タスク

XMLファイルからJaxbクラス群を自動生成する例(Antタスク)

■プロジェクト構成
lib/jaxb/
    activation.jar
    jaxb-api.jar
    jaxb-impl.jar
    jaxb-xjc.jar
lib/trang/
    trang.jar
src/
    ソースがここで生成されます
xml/
    orders.xml
xml-schema/
    orders.xsd

Xml2JaxbBuild.xml

■Antタスクファイル例
Xml2JaxbBuild.xml
<?xml version="1.0" encoding="utf-8" ?>

<project default="xjc-compile" basedir=".">
    <property name="src.dir" location="src" />
    <property name="lib.jaxb.dir" location="lib/jaxb" />
    <property name="lib.trang.dir" location="lib/trang" />
    
    <property name="xml.dir" value="xml" />
    <property name="xml-schema.dir" location="xml-schema" />
    
    <property name="xml.name" value="Orders.xml" />
    <property name="schema.name" value="Orders.xsd" />
    
    <property name="package" value="com.test" />

    <path id="classpath">
        <fileset dir="${lib.jaxb.dir}" includes="*.jar" />
    </path>

    <taskdef name="xjc" classname="com.sun.tools.xjc.XJCTask" classpathref="classpath" />
    <target name="xjc-compile" depends="xml2SchemaByTrang">
        <echo message="スキーマからJaxbクラス群生成" />
        <xjc schema="${xml-schema.dir}/${schema.name}" target="${src.dir}" package="${package}" />
    </target>
    
    <target name="xml2SchemaByTrang">
        <echo message="XMLファイルからスキーマを生成"/>
        <java jar="${lib.trang.dir}/trang.jar" fork="true">
            <arg line="-I xml -O xsd ${xml.dir}/${xml.name} ${xml-schema.dir}/${schema.name}"/>
        </java>
    </target>
</project>


Xml2JaxbBuild.xmlファイルをAntタスクで実行し、
xml-schema/orders.xsd
及び
src/com/test/にJavaソース(Jaxbクラス群)が生成されます。

trangとjaxbについて、参考資料をご参照ください。

参考資料


Trang - RELAX NGに基づく異なるフォーマットのスキーマコンバータ
JAXBを使おう - サンプルから学ぶXML文書の読み書き

有关作者
Syboos.jp編集長AJavaやオープンソース情報の執筆、Webサイトの開発や運営全般の業務に携わる。

Sponsored Link


Comments