ホーム HTML CSS XML JAVASCRIPT   PHP SQL MORE...   リファレンス 事例集    

XML DOM ノードリスト

« 前章へ 次章へ »

getElementsByTagName() メソッドと childNodes プロパティはノードリストを返します。


Examples

試してください - 例

次の例では、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> 要素のノードリストを表しています:

DOM node list

次のコードは、loadXMLDoc() を使用して xmlDoc に "books.xml" をロードし、"books.xml" の title 要素のノードリストを返します:

xmlDoc=loadXMLDoc("books.xml");

x=xmlDoc.getElementsByTagName("title");

上記ステートメントの実行後、xはノードリストオブジェクトになります。

以下のコードは、ノードリスト(x)の最初の<title>要素からテキストを返します:

txt=x[0].childNodes[0].nodeValue;

Try it yourself »

上記ステートメントの実行後、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 »

例の説明:

  1. loadXMLDoc() を用い、xmlDoc に "books.xml" をロードします
  2. 変数 x に、全 title 要素のノードリストを設定します
  3. 全ての <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);

出力:

cooking
1

Try it yourself »

例の説明:

  1. loadXMLDoc() を用い、xmlDoc に "books.xml" をロードします
  2. 変数 x に、最初の <book> 要素の全属性リストを保持するように設定します
  3. "category" 属性の値を出力します
  4. 属性リストの長さを出力します

« 前章へ 次章へ »