作成 2003/12/16
ああ動いたよってだけのメモです。他のページの方が詳しいです。
CastorはJavaのORマッピングおよびXMLデータバインディングのツールです。BSD-likeライセンスで提供されており、無償で利用できます。ORマッピングの方はCastor-JDO、XMLバインディングの方はCastor-XMLと呼ばれています。ただし、現状(将来的にも?)JDO(JSR-012)やJAXB(JSR-031)の仕様に準拠しているわけではではないようです。
ここではCastor-XMLを利用して以下のことを行ってみます。
以下からCastorをダウンロードします。
ここでは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とかと比べて、わらわらできるクラスが少ないような。。。環境設定も簡単で、使いやすいような気がします。
Java Developer 2004.1 JDO&O/Rマッピング