Apache Commons Digesterを使おう - サンプルから学ぶXML文書の読み込み

2009/02/09 21:24Update
TAGS: Digester | Apache | XML | Java | マッピング

DigesterはXMLファイルをJavaオブジェクトへ単方向にマッピングするためのライブラリです。

Page:  <1|2|3>
目次
XMLドキュメントおよびJavaクラスの定義
DigesterでXMLからJavaオブジェクトへのマッピング
Digester解析ルール

本文は、サンプルからApache Commons Digesterの使い方を紹介したいと思います。

XML文書


たとえば、顧客注文を表すXML文書は次のようになります。
orders.xml
<orders>
 <order seq="0001" date="2007-06-12">
  <customer name="C1" />
  <goods-list>
   <item id="01" name="book" />
   <item id="02" name="CD" />
  </goods-list>
 </order>
 
 <order seq="0002" date="2007-06-12">
  <customer name="C2" />
  <goods-list>
   <item id="05" name="Note" />
   <item id="06" name="Pen" />
  </goods-list>
 </order>
 
</orders>


解説:
order要素:オーダーリスト。複数のオーダーが含まれると想定します。
order要素:オーダー。一つのオーダーを表します。
customer:顧客。
goods-list:商品リスト。何を注文したかを表します。顧客は一度に複数の商品(item)を注文できます。
item:商品。

Javaクラス定義


で、Javaオブジェクト化にした場合、おそらく、Javaクラスの階層はこうなります。
Orders.java
Order.java
Customer.java
GoodsList.java
Item.java

//オーダーリスト
class Orders {
    List <Order> orderList;    //オーダーを格納するためリスト
    
    ...
}

//オーダー
class Order {
    String seq;
    String date;
    
    Customer customer;
    GoodsList goodsList;
    
    ...
}

//顧客
class Customer {
    String name;
}

//商品リスト
class GoodsList {
    List <Item> itemList;    //商品を格納するためリスト
}

//商品
class Item {
    String id;
    String name;
}


さて、Digesterの場合、どうやって上のorders.xmlをJavaオブジェクトに読み込むのか?
Page:  <1|2|3>

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

Sponsored Link


Comments