倭マン's BLOG

くだらない日々の日記書いてます。 たまにプログラミング関連の記事書いてます。 書いてます。

名前空間の暗黙的取り扱い (3) -- 名前を文字列で指定して子ノードを取得するメソッド

今回は、「名前空間の暗黙的取り扱い」とは少々違うかもしれませんが、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");    // 空リストが返される