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(); } } }