目次へ

9. JAXB(1)

2005.10.14 株式会社四次元データ 小野彩子

9.1 JAXBとは

これまで、JavaでXMLを操作する方法として、DOMを見てきました。もちろん、DOMを使用すれば、XMLからデータを読み込んだり、インスタンスのデータよりXMLを作成したりすることが可能です。ただし、実際にプログラムを記述する場合はどうでしょう?DOMを使用してプログラムを作成する場合、プログラマはDOMだけでなく、操作するXMLの構造についても熟知している必要があります。

 例えば、社員データが記述されているemployee.xmlよりデータを読み込み、標準出力に表示するプログラムを考えましょう。

employee.xml
<employees>
  <employee>
    <id>000001</id>
    <name>山田 太郎</name>
    <officeCode>3</officeCode>
  </employee>
  <employee>
    <id>000002</id>
    <name>磯野 次郎</name>
    <officeCode>1</officeCode>
  </employee>
  <employee>
    <id>000003</id>
    <name>川谷 三郎</name>
    <officeCode>1</officeCode>
  </employee>
</employees>

プログラムを実行すると、以下のように表示されます。

$java ReadXMLSample
id:000001 name:山田 太郎 officeCode:3
id:000002 name:磯野 次郎 officeCode:1
id:000003 name:川谷 三郎 officeCode:1

プログラムをDOMで実装した場合、以下のようになるでしょう。

public static void main(String args[]){
    Document document= DocumentBuilderFactory
                                     .newInstance()
                                     .newDocumentBuilder()
                                     .parse(new File("employee.xml"));

    Element rootElement=document.getDocumentElement();
   
    NodeList empNodes=rootElement.getElementsByTagName("employee");

   for(int i=0;i<empNodes.getLength();i++){
        Element empNode=(Element)empNodes.item(i);

        NodeList idElements=empNode.getElementsByTagName("id");
        System.out.println("id;"+idElements.item(0)
                                  .getFirstChild().getNodeValue();

    ...
	          
     }

	return employees;

} 

上のプログラムでは、id要素の値を取得し、標準出力に表示しています。このとき、当然、「id要素がemployees要素の子要素のemployee要素の子要素である」と理解していなければ、プログラムを記述することができません。それでなくても、id要素の値を取得する部分は、いろいろなメソッドを呼び出さなければならず、煩雑です。

そこで、開発されたのがJAXBです。JAXBはJava Architecture for XML Bindingの略で、DOMやSAXよりも簡単にXMLにアクセスするAPIを提供します。JAXBの特徴は、XMLのスキーマからXML操作するためのJavaクラスを自動生成する点にあります。


JAXBの図

JAXBを利用し、自動生成したクラスを使用することによって、XMLの構造をほとんど意識せずに、XMLデータの読み書きを行うプログラムを作成することができます。それでは、JAXBについてみていきましょう。

↑このページの先頭へ

こちらもチェック!

PR
  • XMLDB.jp
  • シナジーマーケティング研究開発グループブログ