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要素に追加しています。