2005.10.14 株式会社四次元データ 小野彩子
XML DOM XSLT 11章 JAXB(3)
- 11.1. JavaインスタンスよりXML文書を生成する
- 11.2. インスタンスの生成
- 11.3. JAXBコンテキストとMarshaller
11.2 インスタンスの生成
まず、インスタンスを生成します。JAXBで自動生成されたクラスのインスタンスを作成する場合、ObjectFactoryクラスを使用します。
ObjectFactory objFactory = new ObjectFactory();
次に、インスタンスを作成します。Complex Typeの要素を表すEmployeesやEmployeeのインスタンスを作成するときは、ObjectFactoryのcreateメソッドを使用します。例えば、XMLのルート要素を表すEmployeesのインスタンスを生成する場合、createEmployeesメソッドを使用します。
Employees employees= (Employees) objFactory.createEmployees();
Employeesインスタンスの次は、Employeeクラスのインスタンスを作成します。
Employee employee = objFactory.createEmployee();
employee要素の子要素で、nameやnameKanaはSimpleTypeです。SimpleTypeの子要素は、set(要素名)メソッドを実行して設定します。
employee.setName("山田太郎"); employee.setNameKana("ヤマダタロウ"); employee.setSection("開発部");
さて、最後に作成したEmployeeインスタンスがEmployeesインスタンスの子要素になるように設定します。子要素が1つ以下の場合、親クラスのsetメソッドを使用して設定します。例えば、employees要素の子要素employeeが1つしか存在しない場合、EmployeesのsetEmployeeメソッドを使用して、設定を行います。
employees.setEmployee(employee);
今回のスキーマを見ると、employees要素の子要素employeeは複数存在する可能性があります。このような場合は、まずEmployees要素のgetEmployeeメソッドを使用し、複数のEmployeeを保存するリストを取得します。
List employeeList = employees.getEmployee();
作成したEmployeeインスタンスをListに追加することによって、employeesの子要素として扱われます。
employeeList.add(employee);