XML DOM ノードリスト
getElementsByTagName() メソッドと childNodes プロパティはノードリストを返します。
 |
試してください - 例 |
次の例では、XML ファイル books.xml を使用します。
外部 JavaScrip 関数 loadXMLDoc() は、XMLファイルのロードに使用します。
最初の <title> 要素からテキストを取得
この例は、getElementsByTagName() メソッドを使用して "books.xml" の最初の <title> 要素からテキストを取得します。
length プロパティを用いてノードを通るループ
この例は、ノードリストとlength プロパティを用いて"books.xml"のすべての<title> 要素を通るようにループします。
要素の属性を取得
この例は、属性リストを用いて "books.xml" の最初の <book> 要素から属性を取得します。
DOM ノードリスト
childNodes や getElementsByTagName() のプロパティやメソッドを使用すると、ノードリストオブジェクトが返されます。
ノードリストオブジェクトは、XMLと同じ順序で、ノードのリストを表します。
ノードリスト内のノードには、0 から始まるインデックス番号でアクセスします。
次のイメージは、"books.xml" の <title>
要素のノードリストを表しています:

次のコードは、loadXMLDoc() を使用して xmlDoc に "books.xml" をロードし、"books.xml" の title 要素のノードリストを返します:
xmlDoc=loadXMLDoc("books.xml");
x=xmlDoc.getElementsByTagName("title"); |
上記ステートメントの実行後、xはノードリストオブジェクトになります。
以下のコードは、ノードリスト(x)の最初の<title>要素からテキストを返します:
上記ステートメントの実行後、txt = "Everyday Italian" です。
ノードリストの長さ
ノードリストオブジェクトは、最新に保たれます。 要素が削除や追加された場合、リストは自動的に更新されます。
ノードリストの length プロパティは、リスト内のノード数です。
以下のコードの部分は、loadXMLDoc() を使用して xmlDoc に "books.xml" をロードし、"books.xml" の <title> 要素の個数を返します:
xmlDoc=loadXMLDoc("books.xml");
x=xmlDoc.getElementsByTagName('title').length; |
上記のステートメントの実行後、x = 4 です。
ノードリストの length は、リストのすべての要素を通るループを可能にします。
以下のコードは、<title> 要素のリストを通るループをするよう、length プロパティを使用します:
例
xmlDoc=loadXMLDoc("books.xml");
//the x variable will hold a node list
x=xmlDoc.getElementsByTagName('title');
for (i=0;i<x.length;i++)
{
document.write(x[i].childNodes[0].nodeValue);
document.write("<br />");
}
|
出力:
Everyday Italian
Harry Potter
XQuery Kick Start
Learning XML
|
Try it yourself »
|
例の説明:
- loadXMLDoc() を用い、xmlDoc に "books.xml" をロードします
- 変数 x に、全 title 要素のノードリストを設定します
- 全ての <title> 要素のテキストノードから値を出力します
DOM 属性リスト (名前付きノードマップ)
要素ノードの属性プロパティは、属性ノードのリストを返します。
これは、名前付きノードマップと言い、メソッドとプロパティにおける多少の違いを除いてノードリストと同じです。
属性リストは、最新に保たれます。 要素が削除や追加された場合、リストは自動的に更新されます。
以下のコードは、loadXMLDoc() を使用して xmlDoc に "books.xml" をロードし、"books.xml" の最初の <book> 要素から属性ノードのリストを返します:
xmlDoc=loadXMLDoc("books.xml");
x=xmlDoc.getElementsByTagName('book')[0].attributes; |
上記のコードの実行後、x.length = は属性の個数で、x.getNamedItem() は属性ノードを取得するために使用します。
以下のコードの部分は、"category" 属性の値と book の属性の数を表示します:
例
xmlDoc=loadXMLDoc("books.xml");
x=xmlDoc.getElementsByTagName("book")[0].attributes;
document.write(x.getNamedItem("category").nodeValue);
document.write("<br />" + x.length);
|
出力:
Try it yourself »
|
例の説明:
- loadXMLDoc() を用い、xmlDoc に "books.xml" をロードします
- 変数 x に、最初の <book> 要素の全属性リストを保持するように設定します
- "category" 属性の値を出力します
- 属性リストの長さを出力します
|