XML DOM ノードアクセス
- 前のページ DOM 属性とメソッド
- 次のページ DOM ノード情報
DOM を通じて、XML ドキュメントの各ノードにアクセスできます。
例
以下の例では、XML ファイルを使用しています。 books.xml.
関数 loadXMLDoc()、外部の JavaScript 内に位置しており、XML ファイルの読み込みに使用されます。
- ノードリストのインデックス番号を使用してノードにアクセスする
- この例では、getElementsByTagname() メソッドを使用して "books.xml" 中的第3つの <title> 要素を取得しています。
- length 属性を使用して要素をループする
- この例では、length 属性を使用して "books.xml" 中的すべての <title> 要素をループしています。
- 要素のノードタイプを確認する
- この例では、nodeType 属性を使用して "books.xml" 中的根要素のノードタイプを取得しています。
- 要素ノードをループする
- この例では、nodeType 属性を使用して "books.xml" 中的要素ノードを処理しています。
- ノードの関係を使用して要素ノードをループする
- この例では、nodeType 属性と nextSibling 属性を使用して "books.xml" 中的要素ノードを処理しています。
ノードにアクセスする
ノードにアクセスするには、3つの方法があります:
- getElementsByTagName() メソッドを使用して
- ノードツリーをループ(巡回)する
- ノードの関係を利用してノードツリー中をナビゲートする
getElementsByTagName() メソッド
getElementsByTagName() メソッドは、指定されたタグ名を持つすべての要素を返します。
文法
ノード.getElementsByTagName("tagname");
例
以下の例はx要素の下のすべての<title>要素を返します:
x.getElementsByTagName("title");
注意:上記の例はx节点の下の<title>要素のみを返します。XML文書内のすべての<title>要素を返すには、以下を使用します:
xmlDoc.getElementsByTagName("title");
ここでは、xmlDocは文書自体(ドキュメント节点)です。
DOM Node List
getElementsByTagName()メソッドを使用して节点リスト(node list)を返します。节点リストは节点の配列です。
以下のコードは loadXMLDoc() 「books.xml"载入 xmlDoc中、そして変数xに<title>节点のリストを保存します:
xmlDoc=loadXMLDoc("books.xml"); x=xmlDoc.getElementsByTagName("title");
インデックスを使用してx内の<title>要素にアクセスできます。第3の<title>にアクセスするには、以下のように書けます:
y=x[2];
注釈:インデックスは0から始まります。
本教程の後の章で、Node Listに関するさらに多くの知識を学びます。
DOM Node List Length
length属性は节点リストの長さ(节点の数)を定義します。
length属性を使用して节点リストを循環できます:
xmlDoc=loadXMLDoc("books.xml"); x=xmlDoc.getElementsByTagName("title"); for (i=0;i<x.length;i++) { document.write(x[i].childNodes[0].nodeValue); document.write("<br />"); }
例を説明します:
- を使用して loadXMLDoc() 「books.xml"载入 xmlDoc
- すべての<title>要素节点を取得します。
- 各<title>要素のテキスト节点の値を出力します。
Node Type
XML文書の documentElement 属性はルート节点です。
の属性は节点の nodeName 属性は节点の名前です。
の属性は节点の nodeType 属性は节点のタイプです。
本教程の次の節で、节点属性に関するさらに多くの知識を学びます。
节点を遍历します。
以下のコードはルート节点の子节点を循環し、それが要素节点であることを確認します:
xmlDoc=loadXMLDoc("books.xml"); x=xmlDoc.documentElement.childNodes; for (i=0;i<x.length;i++) { if (x[i].nodeType==1) {//ノードの関係を使用してノードツリー内でナビゲートする document.write(x[i].nodeName); document.write("<br />"); } }
例を説明します:
- 使用することで loadXMLDoc() 「books.xml" xmlDoc に読み込みます
- ルート要素の子节点を取得します。
- 各子节点的节点类型を確認します。节点类型が「1」の場合、それは要素节点です。
- 要素ノードの場合、そのノードの名前を出力します
ノードの関係を使用してナビゲートする
以下のコードは、ノードの関係を使用してノードツリー内でナビゲートする方法を示しています:
xmlDoc=loadXMLDoc("books.xml"); x=xmlDoc.getElementsByTagName("book")[0].childNodes; y=xmlDoc.getElementsByTagName("book")[0].firstChild; for (i=0;i<x.length;i++) { if (y.nodeType==1) {//ノードの関係を使用してノードツリー内でナビゲートする document.write(y.nodeName + "<br />"); } y=y.nextSibling; }
- 使用することで loadXMLDoc() 「books.xml" xmlDoc に読み込みます
- 最初の「book」要素の子ノードを取得します
- 「y」変数を最初の「book」要素の最初の子ノードに設定します
- 各子ノードのノードタイプを確認し、ノードタイプが「1」の場合、要素ノードです
- 要素ノードの場合、そのノードの名前を出力します
- 「y」変数を次の同級ノードに設定し、ループを再び実行します
- 前のページ DOM 属性とメソッド
- 次のページ DOM ノード情報