Castor メモ

作成 2003/12/16

ああ動いたよってだけのメモです。他のページの方が詳しいです。

Castorって?

CastorはJavaのORマッピングおよびXMLデータバインディングのツールです。BSD-likeライセンスで提供されており、無償で利用できます。ORマッピングの方はCastor-JDO、XMLバインディングの方はCastor-XMLと呼ばれています。ただし、現状(将来的にも?)JDO(JSR-012)やJAXB(JSR-031)の仕様に準拠しているわけではではないようです。

動くまで

ここではCastor-XMLを利用して以下のことを行ってみます。

実験環境

ダウンロード

以下からCastorをダウンロードします。

http://castor.exolab.org/

ここではCastor-XMLを利用するだけなので、The Castor JAR(XML only)のcastor-0.9.5.2-xml.jar をダウンロードしました。

また、Castor-XMLを利用するにはXerces が必要です(依存ライブラリ)。ここでは、Xerces 2.6.0をダウンロードしました。

ソース生成

ソース生成をおこないますが、実行には、設定ファイル castor.propertiesが必要です。デフォルトのcastor.propertiesはCASTORのJARのorg/exolab/castor/castor.propertiesにあります。JARからこのファイルを取り出し、クラスパスのルートに起きます。以下の部分を変更します。indentは任意ですが、この環境では、下の方の設定は必須です。

castor.properties

# True if all documents should be indented on output by default
#
org.exolab.castor.indent=true

# True if xml documents should be validated by the SAX Parser
#
org.exolab.castor.parser.validation=false
org.exolab.castor.parser.namespaces=true

実行します。SourceGeneratorクラスをいろいろオプション付で実行します。ここでは、hoge.xsdを読み込みgensrcディレクトリ以下にhogeパッケージで生成しています。

ソース生成の実行例

set CLASSPATH=bin;lib/castor-0.9.5.2-xml.jar;lib/xercesImpl.jar;lib/xml-apis.jar
java org.exolab.castor.builder.SourceGenerator -i hoge.xsd -package hoge -dest gensrc -verbose types j2

実行すると、いろいろファイルが作成されます。

マーシャリングとアンマーシャリング

hoge.xmlからJavaオブジェクトを作成し(アンマーシャリング)、何もせずにまたXMLに出力(マーシャリング)するプログラムです。

import java.io.FileReader;
import java.io.PrintWriter;

public class MUSample {

    public static void main(String[] args) throws Exception {
        
        //あんまーしゃる
        Man man = (Man) Man.unmarshal(new FileReader("hoge.xml"));
        
        //まーしゃる
        man.marshal(new PrintWriter(System.out));        
    }
}

実行結果は標準出力にこんなの出ます。

<?xml version="1.0" encoding="UTF-8"?>
<man>
    <name>miya</name>
    <age>10</age>
</man>

感想

なんかJAXBとかと比べて、わらわらできるクラスが少ないような。。。環境設定も簡単で、使いやすいような気がします。

@TODO

参考

Java Developer 2004.1 JDO&O/Rマッピング


TOP