XML DOM ノードの定位
- 前のページ DOM ブラウザ
- 次のページ DOM ノードの取得
ノード間の関係を使用してノードを定位できます。
例
以下の例ではXMLファイルを使用しています books.xml。
関数 loadXMLDoc()、外部のJavaScriptでXMLファイルをロードするために使用されます。
- ノードの親ノードを取得する
- この例では、parentNode 属性を使用して、ノードの親ノードを取得します。
- ノードの最初の子ノードを取得
- この例では、firstChild() メソッドとカスタム関数を使用して、ノードの最初の子ノードを取得します。
DOM ノードの定位
ノード間の関係を通じてノードツリーのノードにアクセスすることを通常「ノードナビゲーション」と呼びます。
XML DOM では、ノードの関係はノードの属性として定義されています:
- parentNode
- childNodes
- firstChild
- lastChild
- nextSibling
- previousSibling
以下の画像は以下を示しています: books.xml DOM ノードツリーの一部であり、ノード間の関係を説明しています:

DOM - 親ノード
すべてのノードは親ノードが1つだけあります。以下のコードは、<book> の親ノードを定位します:
xmlDoc=loadXMLDoc("books.xml"); x=xmlDoc.getElementsByTagName("book")[0]; document.write(x.parentNode.nodeName);
例解:
- を使用して loadXMLDoc() "をbooks.xml「」を xmlDoc に読み込む
- 最初の <book> ノードを取得
- "x" の親ノードのノード名を出力
空のテキストノードを避ける
Firefox や他のブラウザは空の空白や改行をテキストノードとして扱いますが、IE はこのようにしません。
以下の属性を使用すると問題が発生します:firstChild、lastChild、nextSibling、previousSibling。
空のテキストノード(要素ノード間のスペースや改行シンボル)に位置するのを避けるために、ノードのタイプを確認する関数を使用します:
function get_nextSibling(n) { y=n.nextSibling; while (y.nodeType!=1) { y=y.nextSibling; } return y; }
上記の関数があれば、get_nextSibling(node) を使用して node.nextSibling 属性に代えることができます。
コードの説明:
要素ノードのタイプは 1 です。同じ階層のノードが要素ノードでない場合は、次のノードに移動し、要素ノードが見つかるまで続けます。この方法により、IE と Firefox で同じ結果が得られます。
最初の要素を取得
以下のコードは、最初の <book> の最初の要素ノードを表示します:
<html> <head> <script type="text/javascript" src="loadxmldoc.js"> </script> <script type="text/javascript"> //チェックをし、最初のノードが要素ノードであるかどうか function get_firstChild(n) { y=n.firstChild; while (y.nodeType!=1) { y=y.nextSibling; } return y; } </script> </head> <body> <script type="text/javascript"> xmlDoc=loadXMLDoc("books.xml"); x=get_firstChild(xmlDoc.getElementsByTagName("book")[0]); document.write(x.nodeName); </script> </body> </html>
出力:
title
例解:
- を使用して loadXMLDoc() "をbooks.xml" xmlDoc 中に
- 最初の <book> 上で get_firstChild 関数を使用して、要素节点内の最初の子节点を取得します
- 最初の子节点(要素节点に属する)のノード名を出力します
- 前のページ DOM ブラウザ
- 次のページ DOM ノードの取得