XMLDOMノードリスト
ノードのリストは、getElementsByTagName()メソッドとchildNodesプロパティによって返されます。
自分で試してみてください-例
以下の例では、XMLファイル books.xmlを使用しています。
この例では、getElementsByTagName()メソッドを使用して、「books.xml」の最初の<title>要素からテキストを取得します。
この例では、ノードリストとlengthプロパティを使用して、「books.xml」内のすべての<title>要素をループします。
この例では、属性リストを使用して、「books.xml」の最初の<book>要素から属性を取得します。
DOMノードリスト
childNodesやgetElementsByTagName()などのプロパティまたはメソッドを使用する場合、ノードリストオブジェクトが返されます。
ノードリストオブジェクトは、XMLと同じ順序でノードのリストを表します。
ノードリスト内のノードには、0から始まるインデックス番号でアクセスします。
次の画像は、「 books.xml」の<title>要素のノードリストを表しています。
「books.xml」が変数xmlDocにロードされているとします。
このコードフラグメントは、「books.xml」内のタイトル要素のノードリストを返します。
x = xmlDoc.getElementsByTagName("title");
上記のステートメントの実行後、xはノードリストオブジェクトです。
次のコードフラグメントは、ノードリスト(x)の最初の<title>要素からテキストを返します。
例
var txt = x[0].childNodes[0].nodeValue;
上記のステートメントの実行後、txt = "毎日がイタリアン"。
ノードリストの長さ
ノードリストオブジェクトは、それ自体を最新の状態に保ちます。要素が削除または追加されると、リストは自動的に更新されます。
ノードリストの長さプロパティは、リスト内のノードの数です。
このコードフラグメントは、「books.xml」内の<title>要素の数を返します。
x = xmlDoc.getElementsByTagName('title').length;
上記のステートメントの実行後、xの値は4になります。
ノードリストの長さを使用して、リスト内のすべての要素をループできます。
このコードフラグメントは、lengthプロパティを使用して、<title>要素のリストをループします。
例
x = xmlDoc.getElementsByTagName('title');
xLen = x.length;
for (i = 0; i <xLen; i++) {
txt += x[i].childNodes[0].nodeValue) + " ";
}
出力:
Everyday Italian
Harry Potter
XQuery Kick Start
Learning XML
説明された例:
- 「books.xml」がxmlDocにロードされているとします。
- すべてのタイトル要素のノードリストを保持するようにx変数を設定します
- <title>要素からテキストノードの値を収集します
DOM属性リスト(名前付きノードマップ)
要素ノードのattributesプロパティは、属性ノードのリストを返します。
これは名前付きノードマップと呼ばれ、メソッドとプロパティのいくつかの違いを除いて、ノードリストに似ています。
属性リストはそれ自体を最新の状態に保ちます。属性が削除または追加されると、リストは自動的に更新されます。
このコードフラグメントは、「books.xml」の最初の<book>要素から属性ノードのリストを返します。
x = xmlDoc.getElementsByTagName('book')[0].attributes;
上記のコードの実行後、x.length =は属性の数であり、x.getNamedItem()を使用して属性ノードを返すことができます。
このコードフラグメントは、本の「category」属性の値と属性の数を取得します。
例
x = xmlDoc.getElementsByTagName("book")[0].attributes;
txt = x.getNamedItem("category").nodeValue + " " + x.length;
出力:
cooking
1
説明された例:
- 「books.xml」がxmlDocにロードされているとします。
- 最初の<book>要素のすべての属性のリストを保持するようにx変数を設定します
- 「category」属性の値と属性リストの長さを取得します