目次へ

10.JAXB(2)

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

前回は、JAXBを使用してXMLスキーマからJavaクラスを生成しました。今回は、XML文書よりJavaクラスのインスタンスを生成してみましょう。

10.1 JAXBでXML文書よりインスタンスを生成する

今回も従業員情報を例として取り上げます。以下のようなXML文書があります。

employees.xml
<?xml version="1.0"?>
<employees>
  <employee>
    <name>山田太郎</name>
    <nameKana>ヤマダタロウ</nameKana>
    <section>開発部</section>
  </employee>
  <employee>
    <name>海野次郎</name>
    <nameKana>ウミノジロウ</nameKana>
    <section>営業部</section>
  </employee>
</employees>

XML文書そのままではJavaプログラムで扱いづらいです。扱いやすいように、employees要素を表すEmployeesインスタンスや、employee要素を表すEmployeeインスタンスを生成しましょう。EmployeesクラスやEmployeeクラスは、前回JAXBを使用して、XMLスキーマより自動生成したクラスです。

Employeesインスタンス,Employeesクラス,Employeeクラス

以下は、XML文書よりインスタンスのツリーを生成し、従業員の名前や所属情報などを標準出力に出力するプログラムです。

XML2Instance.java
import javax.xml.bind.JAXBContext;
import javax.xml.bind.JAXBException;
import javax.xml.bind.Unmarshaller;


import test.jaxb.Employees;
import test.jaxb.Employee;
import java.io.File;
import java.util.List;


public class XML2Instance {


    public static void main(String args[]) throws JAXBException{
        JAXBContext jc = JAXBContext.newInstance("test.jaxb");
        Unmarshaller unmarshaller = jc.createUnmarshaller();

        Employees employees =
                  (Employees) unmarshaller.unmarshal(new File(args[0]));
        List employeeList
                   = employees.getEmployee();

        for(int i=0;i<employeeList.size();i++){
            Employee employee=(Employee)employeeList.get(i);
            System.out.println("Employee details");
            System.out.println("name:"+employee.getName());
            System.out.println("nameKana:"+employee.getNameKana());
            System.out.println("section:"+employee.getSection());
        }
    }
}
     

↑このページの先頭へ

こちらもチェック!

PR
  • XMLDB.jp