5. XML文書を作成する2
5.1. 属性の付加
属性ノードを付加するためには、2つの方法があります。
一つは、要素やテキストノードと同様に、属性ノードを作成して付加する方法です。属性ノードを作成するには、DocumentオブジェクトのcreateAttribute(String tagName)メソッドを使用します。引数には、属性の名前を設定します。戻り値としてAttrノードが返されます。属性の値を設定するには、AttrノードのsetValue(String value)メソッドを使用します。引数に、属性の値をあらわす文字列を指定します。作成した属性ノードを要素に付加するためには、ElementのsetAttributeNode(Attr attr)メソッドを使用します。
二つ目の方法は、ElementのsetAttribute(String attrName,String attrValue)メソッドを使用する方法です。setAttribute()メソッドは2つのString引数をとります。一つ目の引数には、属性の名前を指定します。二つ目の引数には、属性の値を指定します。メソッドを実行すると、指定した名前、値の属性がElementノードに追加されます。
それでは、以下のようなXML文書を生成してみましょう。4.2で紹介したXML文書にid属性を追加します。
1 <employees> 2 <employee id="1" >太郎</employee> 3 <employee id="2" >次郎</employee> 4 </employees>
以上のXML文書を出力するプログラムは以下のようになります。
15 public class WriteAttributes{
16
17 public static void main(String args[]) throws Exception{
18
...
22
23 Document document = domImpl.createDocument("","employees",null);
24 Element employees=document.getDocumentElement();
25
26 Element employee=document.createElement("employee");
27 employee.appendChild(document.createTextNode("太郎"));
28 employees.appendChild(employee);
29
30 Attr attr=document.createAttribute("id");
31 attr.setValue("1");
32 employee.setAttributeNode(attr);
33
34 Element employee2=document.createElement("employee");
35 employee2.appendChild(document.createTextNode("次郎"));
36 employees.appendChild(employee2);
37
38 employee2.setAttribute("id","2");
39
...
48 }
49
50 }
一つ目の「employee」要素には、setAttributeNode()メソッドを使用して、属性を追加しています。まず、30行目で、DocumentのcreateAttribute()メソッドを使用し「id」という名前の属性ノードを作成しています。次に、31行目で、id属性の値を「1」に設定しています。最後に、作成した属性をemployee要素に追加します(32行目)。
二つ目の「employee」要素には、 setAttribute()メソッドを使用して属性を追加しています。一つ目の引数には「id」、二つ目の引数には「2」を指定しています。これにより、属性名「id」、属性値「2」の属性を、employee要素に追加しています。

