今回は org.dom4j.Element に定義されている、要素に対して新たにノードを付け加えるメソッドを2つ見ていきます(一覧):
- addElement(String) : Element*1
- addAttribute(String, String) : Element
付け加えるノードが要素か属性かによって、設定される名前空間が異なります。 ただし、祖先要素でも名前空間(宣言)を使っていなければ、どちらも NULL 名前空間 ("") になります。
Element#addElement(String) : Element
addElement() メソッドを用いて要素を付加すると、付加した要素の名前空間はデフォルト名前空間、すなわち親(祖先)要素で定義された接頭辞なしの名前空間*2に設定されます。
サンプルを見てみましょう。
// 準備 Document doc = DocumentHelper.parseText("<parent xmlns='ns'/>"); Element root = doc.getRootElement(); // 要素を付け加える root.addElement("child");
これを実行すると、Document オブジェクト doc が表す XML 文書は
<parent xmlns="ns"> <child/> </parent>
となります。 <child> 要素の名前空間は「"ns" 名前空間」になっています。
Element#addAttribute(String, String) : Element
addAttribute() メソッドを用いて属性を付加すると、付加した要素の名前空間は NULL 名前空間に設定されます。
サンプルを見てみましょう:
// 準備 Document doc = DocumentHelper.parseText("<parent xmlns='ns'/>"); Element root = doc.getRootElement(); // 属性を付け加える root.addAttribute("att", "value");
これを実行すると、Document オブジェクト doc が表す XML 文書は
<parent xmlns="ns" att="value"/>