今回は、「名前空間の暗黙的取り扱い」とは少々違うかもしれませんが、org.dom4j.Element に定義されている「文字列を指定してノードを取得する」メソッドを見ていきます(一覧)。 具体的には
- attribute(String) : Attribute
- attributeValue(String) : String
- element(String) : Element
- elements(String) : List
- elementText(String) : String
- elementTextTrim(String) : String
などです。 大まかに言って属性と要素の2種類なので、以下の2つのメソッドをピックアップして見ていきましょう:
- attributeValue(String) : String
- element(String) : Element
Element#attributeValue(String) : String
ローカル名が引数の文字列で指定される属性の値が返されます。 接頭辞を付加した名前を指定しても値は返されません。
サンプル:
// 準備 Document doc = DocumentHelper.parseText( "<parent xmlns:ns='ns' ns:att='value'/>"); Element parent = doc.getRootElement(); //属性値を取得 parent.attributeValue("att"); // "value" が返される parent.attributeValue("ns:att"); // null が返される
Element#element(String) : Element
ローカル名が引数の文字列で指定される属性の値が返されます。 接頭辞を付加した名前を指定しても要素は返されません。
サンプル:
// 準備 Document doc = DocumentHelper.parseText( "<parent xmlns:ns='ns'>" + "<child/> "+ "<ns:child/> "+ "</parent>"); Element parent = doc.getRootElement(); // 要素を取得 parent.elements("child"); // <child>, <ns:child> 要素を含むリストが返される parent.elements("ns:child"); // 空リストが返される