10.JAXB(2)
2005.10.14 株式会社四次元データ 小野彩子
XML DOM XSLT 10章 JAXB(2)
- 10.1. JAXBでXML文書よりインスタンスを生成する
- 10.2. JAXBコンテキストとUnmarshaller
- 10.3. 子要素を取得する
- 10.4. XML文書の検証を行う
前回は、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スキーマより自動生成したクラスです。

以下は、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());
}
}
}

