2007年06月17日(日)更新 |
■属性の値を取得する
たけち: 前回は、テキストノードの値を取得するメソッドについて学んだね。 さらら: えぇ、getNodeValueメソッドだったわね。 たけち: で、今回は、属性の値を取得するメソッドを学ぼう。 さらら: あっ、はい。 たけち: 属性の値を取得するには、今回は次のような手順を踏むね。 |
|
さらら: getAttributeは前にノードの内容を取得するのに使ったわね。NamedNodeMapってなに? たけち: NamedNodeMapは、名前付けされた複数のノードを持っているんだ。 さらら: そうなんだ。だから、名前を指定したgetNamedItem(属性名)で、属性ノードを取ってこれるのね。 たけち: そうなんだね。で、今回は、これまでのサンプルXMLデータに属性を追加したものを使って、その属性の値を取得してみようね。まずは、getAttributesメソッドとのgetNamedItemメソッド書き方を見ておこうね。 さらら: は〜い。 |
getAttributesメソッド
NamedNodeMap | getAttributes() |
---|---|
機能: 要素ノードに関連付けられている属性を持っているNamedNodeMapを取得します。 | |
パラメタ: 無し | |
戻り値: NamedNodeMap 属性を持っているNamedNodeMap null 要素ノードに関連付けられている属性を持っているNamedNodeMapが無い場合 |
getNamedItemメソッド
Node | getNamedItem(String name) |
---|---|
機能: NamedNodeMapから、指定した名前のノードを取得します。 | |
パラメタ: ノードの名前 | |
戻り値: Node ノード null 指定した名前の属性が無い場合 |
■サンプルXMLデータ
たけち: じゃ、今回は属性を持った、ごくごく簡単なsample2.xmlファイルを使ってテキストノードの内容を表示してみよう。 さらら: はい。次のXMLデータね。 |
サンプルXMLデータ(2) sample3.xml |
---|
<?xml version="1.0" encoding="UTF-8" ?> |
さらら: noteとstudentっていう名前の属性があるのね。 たけち: そうだね。sample3.xmlのDOMツリーの概観を確認しておこう。 さらら: あっ、はい。 |
■DOMサンプルプログラム(5)
たけち: じゃ、次に今回のDOMサンプルプログラム(5)のソースコードを載せておくね。 さらら: はい。 |
行 | DOMサンプルプログラム(5) DOMSample5.java |
---|---|
01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 |
package dom.study.sample_1; import java.io.IOException; import org.apache.xerces.parsers.DOMParser; import org.w3c.dom.Document; import org.w3c.dom.NamedNodeMap; import org.w3c.dom.Node; import org.xml.sax.SAXException; public class DOMSample5 { public static void main(String[] args) { String file = args[0]; try { DOMParser parser = new DOMParser(); // パーサの生成 parser.parse(file); // XMLファイルのパース Document document = parser.getDocument(); // DOCUMENTノードの取得 if (document.hasChildNodes()) { // 子ノードがある場合 Node node = document.getFirstChild(); // DOCUMENTノードの最初の子ノード NamedNodeMap attrs = node.getAttributes(); // NamedNodeMapの取得 if (attrs!=null) { Node attr = attrs.getNamedItem("note"); // note属性ノード System.out.println("note属性 = " + attr.getNodeValue()); // note属性の値 attr = attrs.getNamedItem("student"); // student属性ノード System.out.println("student属性 = " + attr.getNodeValue()); // student属性の値 } } else { System.out.println("DOCUMENTノードに子ノードがありません。"); } } catch (SAXException e) { System.out.println("XMLデータが不正です。"); e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } } |
さらら: えっ〜と。。。26行目の たけち: そうだね。 さらら: で、30行目の たけち: そうなんだね。そんなに難しくないでしょ。 さらら: えぇ。 |
■DOMSample5の実行例(sample3.xmlの処理)
たけち: じゃ、sample3.xmlファイルを指定して、DOMSample5プログラムを実行させてみよう。実行結果は次のようになるよ。 |
DOMサンプルプログラム(5) DOMSample5.javaの実行結果 |
---|
note属性 = DOM学習 student属性 = さらら |
さらら: それぞれの要素ノードの内容が表示されているわ。 たけち: 今回は、属性名があらかじめわかっているときの属性ノードの内容を取得したね。 さらら: あっ、はい。 たけち: じゃね今回は、これでおしまい。おつかれさま。 さらら: あっ、は〜い。ありがとね。 → 次回は、NamedNodeMapのメソッドについての補足です。....... (^ ^; |