11.JAXB(3)
2005.10.14 株式会社四次元データ 小野彩子
XML DOM XSLT 11章 JAXB(3)
- 11.1. JavaインスタンスよりXML文書を生成する
- 11.2. インスタンスの生成
- 11.3. JAXBコンテキストとMarshaller
今回は、JavaインスタンスよりXML文書を生成してみましょう。
11.1 JavaインスタンスよりXML文書を生成する
今回も従業員情報を例として取り上げます。以下のように、Employeeインスタンス2つと、Employeeのリストを保持するEmployeesインスタンスを生成します。EmployeesクラスやEmployeeクラスは、前々回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文書を出力するプログラムです。
Instance2XML.java
import javax.xml.bind.JAXBContext;
import javax.xml.bind.JAXBException;
import javax.xml.bind.Marshaller;
import test.jaxb.ObjectFactory;
import test.jaxb.Employees;
import test.jaxb.Employee;
import java.io.FileOutputStream;
import java.util.List;
public class Instance2XML {
public static void main(String args[]) throws JAXBException{
try {
ObjectFactory objFactory = new ObjectFactory();
Employees employees= (Employees) objFactory.createEmployees();
List employeeList = employees.getEmployee();
Employee employee = objFactory.createEmployee();
employee.setName("山田太郎");
employee.setNameKana("ヤマダタロウ");
employee.setSection("開発部");
employeeList.add(employee);
Employee employee2 = objFactory.createEmployee();
employee2.setName("海野次郎");
employee2.setNameKana("ウミノジロウ");
employee2.setSection("営業部");
employeeList.add(employee2);
JAXBContext jaxbContext = JAXBContext.newInstance("test.jaxb");
Marshaller marshaller = jaxbContext.createMarshaller();
marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT ,
new Boolean(true));
marshaller.marshal(employees,
new FileOutputStream("employees.xml"));
System.out.println("See output in employees.xml " ) ;
}catch (Exception e ) {
e.printStackTrace();
}
}
}

