2007年06月17日(日)更新 |
■NamedNodeMapのメソッドについての補足
たけち: 前回は、属性の値を取得するメソッドについて学んだね。 さらら: えぇ、要素ノードからNamedNodeMapを取得して、そこからgetNamedItemメソッドを使って取得したわね。 たけち: うん。そのときには、つぎのように属性の名前を直接指定したよね。 Node attr = attrs.getNamedItem("note"); // note属性ノード attr = attrs.getNamedItem("student"); // student属性ノード さらら: あっ、そうだったわね。 たけち: ところで、NamedNodeMapには、属性がいくつあるか、属性の名前がなになのかを提供してくれるメソッドがあるんだ。もっとも、DOMで規定されているわけではなくって、便利なメソッドとして提供されているだけなんだけどね。 さらら: あっ、そうなの。 たけち: 今回は、補足としてNamedNodeMapのそれらのメソッドを簡単に見ておこう。 |
getLengthメソッド
int | getLength() |
---|---|
機能: NamedNodeMap内のノード数を取得します。 | |
パラメタ: 無し | |
戻り値: int NamedNodeMap内のノード数 |
itemメソッド
Node | item(int index) |
---|---|
機能: NamedNodeMap内の index番目のノードを取得します。indexは0〜の整数を指定します。 | |
パラメタ: index | |
戻り値: Node ノード null indexが有効でない場合 |
■サンプルXMLデータ
たけち: じゃ、サンプルXMLデータは前回と同じsample2.xmlファイルを使うね。 さらら: はい。次のXMLデータね。 |
サンプルXMLデータ(2) sample3.xml |
---|
<?xml version="1.0" encoding="UTF-8" ?> |
■DOMサンプルプログラム(6) NamedNodeMapの利用方法の補足
たけち: じゃ、次に今回のDOMサンプルプログラム(6)のソースコードを載せておくね。 さらら: はい。 |
行 | DOMサンプルプログラム(6) DOMSample6.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 |
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 DOMSample6 { 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) { for (int index=0;index<attrs.getLength();index++) { Node attr = attrs.item(index); // 属性ノード System.out.print("属性名 = " + attr.getNodeName()); // 属性の名前 System.out.println(", 値 = " + attr.getNodeValue()); // 属性の値 } } } else { System.out.println("DOCUMENTノードに子ノードがありません。"); } } catch (SAXException e) { System.out.println("XMLデータが不正です。"); e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } } |
さらら: えっ〜と。。。30行目から34行目までで、NamedNodeMapの中のノードの数だけ、属性のノードを取得して、それぞれの属名の名前と属性の値を取得しているのね。 たけち: そう、そうだね。だいたいわかるよね。 さらら: えぇ、なんとかね。(^ ^; |
■DOMSample6の実行例(sample3.xmlの処理)
たけち: じゃ、sample3.xmlファイルを指定して、DOMSample5プログラムを実行させてみよう。実行結果は次のようになるよ。 |
DOMサンプルプログラム(6) DOMSample6.javaの実行結果 |
---|
属性名 = note, 値 = DOM学習 属性名 = student, 値 = さらら |
さらら: それぞれの要素ノードの属性名と内容が表示されているわ。 たけち: 今回は、属性を取得するときに使ったNamedNodeMapついて補足しました、ということで、今回はこれでおしまい。おつかれさま。 さらら: あっ、は〜い。ありがとね。 → 次回は、【補足】XMLデータが正しくない場合です。....... (^ ^; |