XML DOM - ノードへのアクセス
DOM を使用すると、XML ドキュメント内のすべてのノードにアクセスできます。
試してみる - 例
以下の例では XML ファイルを使用します。
関数loadXMLDoc()、外部 JavaScript 内に配置され、XML ファイルの読み込みに使用されます。
この例では、getElementsByTagname() メソッドを使用して "books.xml" 内の 3 番目の <title> 要素を取得します。
この例では、length 属性を使用して "books.xml" 内のすべての <title> 要素を走査します。
この例では、nodeType 属性を使用して "books.xml" 内のルート要素のノードタイプを取得します。
この例では、nodeType 属性を使用して "books.xml" 内の要素ノードを処理します。
この例では、nodeType 属性と nextSibling 属性を使用して "books.xml" 内の要素ノードを処理します。
ノードへのアクセス
ノードにアクセスするには、次の 3 つの方法があります。
1. getElementsByTagName() メソッドを使用する。
2. ノードツリーをループ(走査)する。
3. ノードの関係を利用してノードツリー内をナビゲートする。
getElementsByTagName() メソッド
getElementsByTagName() は、指定されたタグ名を持つすべての要素を返します。
構文
例
以下の例では、x 要素配下のすべての <title> 要素を返します:
上記の例は、x ノード配下の <title> 要素のみを返すことに注意してください。XML ドキュメント内のすべての <title> 要素を返す必要がある場合は、次を使用します:
ここでは、xmlDoc はドキュメント自体(ドキュメントノード)です。
DOM ノードリスト(Node List)
getElementsByTagName() メソッドはノードリストを返します。ノードリストはノードの配列です。
以下のコードは、次を使用しますloadXMLDoc()"" を xmlDoc に読み込み、変数 x に <title> ノードのリストを格納します:
x=xmlDoc.getElementsByTagName("title");
インデックス番号を使用して x 内の <title> 要素にアクセスできます。3 番目の <title> にアクセスするには、次のように記述します:
注意:このインデックスは 0 から始まります。
このチュートリアルの後の章では、ノードリスト(Node List)について詳しく学びます。
DOM ノードリストの長さ(Node List Length)
length 属性はノードリストの長さ(つまりノードの数)を定義します。
length 属性を使用してノードリストを走査できます:
例
試してみる »
例の説明:
- 使用してloadXMLDoc()"" を xmlDoc に読み込みます
- すべての <title> 要素ノードを取得します
- 各 <title> 要素のテキストノードの値を出力します
ノードタイプ(Node Types)
XML ドキュメントのdocumentElement属性はルートノードです。
ノードのnodeName属性はノードの名前です。
ノードのnodeType属性はノードのタイプです。
このチュートリアルの次の章では、ノードの属性について詳しく学びます。
ノードの走査
以下のコードは、ルートノードの子ノード(要素ノードでもあります)を走査します:
例
試してみる »
例の説明:
- 使用してloadXMLDoc()"" を xmlDoc に読み込みます
- ルート要素の子ノードを取得します
- 各子ノードのノードタイプを確認します。ノードタイプが "1" の場合は、要素ノードです。
- 要素ノードの場合は、ノードの名前を出力します
ノードの関係のナビゲーション
以下のコードは、ノードの関係を使用してノードツリーをナビゲートします:
例
試してみる »
- 使用してloadXMLDoc()"" を xmlDoc に読み込みます
- 最初の book 要素の子ノードを取得します
- "y" 変数を最初の book 要素の最初の子ノードに設定します
- 各子ノード(最初の子ノードは "y" から始まります)について、ノードタイプを確認し、ノードタイプが "1" の場合は要素ノードです。
- 要素ノードの場合は、そのノードの名前を出力します
- "y" 変数を次の兄弟ノードに設定し、ループを再度実行します
その他の拡張