XML DOM ノードリスト

ノードリストは、getElementsByTagName() メソッドと childNodes 属性により返されます。

以下の例では、XML ファイルを使用します。 books.xml

関数 loadXMLDoc()、外部の JavaScript 内に位置し、XML ファイルの読み込みに使用されます。

最初の <title> 要素からテキストの取得
この例では、"books.xml" 内の最初の <title> 要素からテキストを取得するために getElementsByTagName() メソッドを使用します。
length 属性を使用してループ
この例では、"books.xml" 内のすべての <title> 要素をループするためにノードリストと length 属性を使用します。
要素の属性の取得
この例では、"books.xml" 内の最初の <title> 要素から属性を取得するために属性リストを使用します。

DOM ノードリスト

childNodes や getElementsByTagName() 属性やメソッドを使用すると、NodeList オブジェクトが返されます。

NodeList オブジェクトは、XML内の同じ順序で要素のリストを表します。

ノードリストの要素にアクセスするために、0から始まるインデックスを使用します。

以下の画像は"}}"を示しています。books.xml" title要素のノードリスト:

DOM ノードリスト

以下のコードスニペットは、以下のように使用されます: loadXMLDoc() " books.xml"をxmlDocに読み込んで、"books.xml" title要素のノードリストの一例:

xmlDoc=loadXMLDoc("books.xml");
x=xmlDoc.getElementsByTagName("title");

上記の文の実行後、xはNodeListオブジェクトになります。

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

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

上記の文の実行後、txt = "Everyday Italian"です。

TIY

Node List Length

NodeListオブジェクトは自身の更新を保持します。要素を削除したり追加したりすると、リストが自動的に更新されます。

ノードリストのlength属性は、リスト内のノードの数です。

以下のコードスニペットは、以下のように使用されます: loadXMLDoc() 把 "books.xml" xmlDocに読み込む、そして"books.xml"内の<title>要素の数を返します:

xmlDoc=loadXMLDoc("books.xml");
x=xmlDoc.getElementsByTagName('title').length;

上記の文の実行後、x = 4です。

ノードリストの長さは、リスト内のすべての要素をループするために使用できます。

以下のコードスライスはlength属性を使用して<title>要素のリストを巡回します:

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 />");
}

出力:

Harry Potter
Everyday Italian
XQuery Kick Start
Learning XML

例解:

  • 使用することで loadXMLDoc() 把 "books.xml" xmlDocに読み込む
  • すべてのtitle要素のノードリストを保存するx変数を設定
  • すべての<title>要素のテキストノードの出力値

TIY

DOM Attribute List (Named Node Map)

要素ノードのattributes属性は属性ノードのリストを返します。

これはNamed Node Mapと呼ばれ、メソッドや属性に関するいくつかの違いを除いて、ノードリストに似ています。

属性リストは自身の更新を保持します。属性を削除したり追加したりすると、リストが自動的に更新されます。

以下のコードスニペットは、以下のように使用されます: loadXMLDoc() 把 "books.xml" 載入 xmlDoc 中,并从 "books.xml" 中的最初の <book> 要素から属性ノードのリストを返します:

xmlDoc=loadXMLDoc("books.xml");
x=xmlDoc.getElementsByTagName('book')[0].attributes;

以上のコードを実行すると、x.length は属性の数に等しくなり、x.getNamedItem() を使用して属性ノードを返すことができます。

以下のコードスニペットは、book の "category" 属性の値とその属性の数を示します:

xmlDoc=loadXMLDoc("books.xml");
x=xmlDoc.getElementsByTagName("book")[0].attributes;
document.write(x.getNamedItem("category").nodeValue);
document.write("<br />" + x.length);

出力:

children
1

例解:

  • 使用することで loadXMLDoc() 把 "books.xml" 載入 xmlDoc 中
  • x に、最初の <book> 要素のすべての属性のリストを設定します
  • "category" 属性の値を出力します
  • 属性リストの長さを出力します

TIY