目次へ

4.3. 要素、テキストの付加

要素ノードを作成するには、DocumentオブジェクトのcreateElement(String tagName)メソッドを使用します。引数に、作成する要素の名前を指定します。戻り値として、Elementノードが返されます。作成した要素ノードは、appendChild()メソッドを使用して、DOMツリーに付加します。appendChildメソッドを実行したノードの子ノードとして追加されます。

テキストノードを作成するには、DocumentオブジェクトのcreateTextNode(String data)メソッドを使用します。引数には、テキストノードの内容を指定します。戻り値として、Textノードが返されます。作成したTextノードは、要素と同じように、appendChild()メソッドを使用してDOMツリーに付加します。

それでは、XML文書を作成しましょう。

1  <employees>
2    <employee id="1" >太郎</employee>
3    <employee id="2" >次郎</employee>
4  </employees>

以上のXML文書を出力するプログラムは以下のようになります。

14  public class WriteEmployeeXML{
15      
16      public static void main(String args[]) throws Exception{
17
...
21
22          Document document = domImpl.createDocument("","employees",null);
23          Element employees=document.getDocumentElement();
24
25          Element employee=document.createElement("employee");
26          employee.appendChild(document.createTextNode("太郎"));
27          employees.appendChild(employee);
28
29          Element employee2=document.createElement("employee");
30          employee2.appendChild(document.createTextNode("次郎"));
31          employees.appendChild(employee2);
...
41      }
42      
43  }

 Documentオブジェクトを新しく作成したら、ルート要素「employees」を取得します(22,23行目)。次に、employeesの子要素「employee」を作成しています。「employee」の内容は「太郎」という文字列になります。これより、「太郎」というテキストノードを取得し、employeeの子ノードとして付加します(26行目)。最後にemployee要素をemployees要素の子要素として設定します。同様に内容が「次郎」のemployee要素も作成し、employees要素に付加します。DOMツリーをファイルに出力すれば、完成です。

※実際に出力されるXML文書には、要素間の改行文字やインデントは含まれません。本資料では、見やすいように、例で挙げる出力XMLファイルには、適宜改行やインデントを加えています。

(実習課題2)

DBよりあるテーブルのデータ一覧を取得し、XML文書にして表示するプログラムを作成しなさい。例えば、以下のようなテーブルがあったとします。

Table "customer"
Attribute | Type | Modifier
-----------+-----------------------+----------------------
c_num | character(4) | not null
c_name | character varying(40) | not null
address | character varying(20) | default 'Osaka city'
office | character(2) |


    この場合、生成されるXML文書は以下のようになります。

<customer>
    <data>
        <c_num>1001</c_num>
        <c_name>Imada Kouchi</c_name>
        <address>Osaka city</address>
        <office>10</office>
    </data>
    <data>
...
	</data>
</customer>
  • ルート要素の名前はテーブル名
  • 1行はdata要素で表す
  • 各カラムのデータの値は,カラム名の要素の内容として出力する
  • 使用するデータベース、テーブルは任意(Postgresql、Oracle)。

解答例はこちら

↑このページの先頭へ

こちらもチェック!

PR
  • XMLDB.jp