XML DOM チュートリアルlogin
XML DOM チュートリアル
著者:php.cn  更新時間:2022-04-13 15:27:56

DOMアクセス


XML DOM - ノードへのアクセス


DOM を使用すると、XML ドキュメント内のすべてのノードにアクセスできます。



tryitimg.gif 試してみる - 例


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

外部JavaScriptにある関数loadXMLDoc()は、XMLファイルをロードするために使用されます。

ノード リストのインデックス番号を使用してノードにアクセスします
この例では、getElementsByTagname() メソッドを使用して、「books.xml」の 3 番目の <title> 要素を取得します。

length 属性を使用してノードを走査します
この例では、length 属性を使用して「books.xml」内のすべての <title> 要素を走査します。

要素のノード タイプを表示する
この例では、nodeType 属性を使用して、「books.xml」内のルート要素のノード タイプを取得します。

要素ノードの走査
この例では、nodeType 属性を使用して、「books.xml」内の要素ノードを処理します。

ノードの関係を使用して要素ノードを走査する
この例では、nodeType 属性と nextSibling 属性を使用して、「books.xml」内の要素ノードを処理します。


ノードへのアクセス

3 つの方法でノードにアクセスできます:

1. getElementsByTagName() メソッドを使用します。

2. ノードツリーをループ(走査)することによって。

3. ノードの関係を利用してノード ツリー内を移動します。


getElementsByTagName() メソッド

getElementsByTagName() は、指定されたタグ名を持つすべての要素を返します。 syntax

node..getelementsbytagname(
"tagname"); );上記の例では、x ノードの下の <title> 要素のみが返されることに注意してください。 XML ドキュメント内のすべての <title> 要素を返すには、次を使用します:

xmlDoc.getElementsByTagName("title");

ここで、xmlDoc はドキュメント自体 (ドキュメント ノード) です。
DOMノードリスト(ノードリスト)

getElementsByTagName()メソッドはノードリストを返します。ノード リストはノードの配列です。

次のコードは、loadXMLDoc() を使用して「books.xml」を xmlDoc にロードし、変数 x に <title> ノードのリストを格納します。
x=xmlDoc.getElementsByTagName("title");

x の <title> 要素には、インデックス番号を介してアクセスできます。 3 番目の <title> にアクセスするには、次のように記述できます:


y=x[2];

注: インデックスは 0 から始まります。

このチュートリアルの後の章では、ノード リストについて詳しく学習します。


DOM ノード リストの長さ

length 属性は、ノード リストの長さ (つまり、ノードの数) を定義します。

長さ属性を使用してノード リストを移動できます:

インスタンス

<!DOCTYPE html>
<html>
<head>
<script src="loadxmldoc.js"></script>
</head>
<body>

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

インスタンスの実行»

「インスタンスの実行」ボタンをクリックしてオンライン例を表示します

インスタンスの説明:

  1. loadXMLDoc( ) を使用して、「books.xml」を xmlDoc にロードします

  2. すべての <title> 要素ノードを取得します

  3. 各 <title> 要素のテキスト ノードの値を出力します


)

XML ドキュメントの documentElement 属性はルート ノードです。

node の nodeName 属性は、ノードの名前です。

node の nodeType 属性は、ノードのタイプです。

このチュートリアルの次の章でノードのプロパティについて詳しく学習します。

試してみる


ノードを走査

次のコードは、要素ノードでもあるルートノードの子ノードを走査します:

インスタンス

<!DOCTYPE html>
<html>
<head>
<script src="loadxmldoc.js"></script>
</head>
<body>

<script>
xmlDoc=loadXMLDoc("books.xml");

x=xmlDoc.documentElement.childNodes;
for (i=0;i<x.length;i++)
{ 
if (x[i].nodeType==1)
  {//Process only element nodes (type 1) 
  document.write(x[i].nodeName);
  document.write("<br>");
  } 
}
</script>
</body>
</html>

インスタンスの実行»

「インスタンスの実行」をクリックします」オンライン例を表示するボタン

例の説明:

  1. loadXMLDoc()を使用して「books.xml」をxmlDocにロードします

  2. ルート要素の子ノードを取得します

  3. ノードタイプを確認します各子ノードの。ノードタイプが「1」の場合、要素ノードです

    ​​
  4. 要素ノードの場合、ノードの名前が出力されます


ナビゲーションノードの関係

次のコードは、ノードの関係を使用して、ノード ツリーに移動します:

<!DOCTYPE html>
<html>
<head>
<script src="loadxmldoc.js"></script>
</head>
<body>

<script>
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)
  {//Process only element nodes (type 1)
  document.write(y.nodeName + "<br>");
  }
y=y.nextSibling;
}
</script>
</body>
</html>

例の実行»

[例の実行] ボタンをクリックしてオンライン例を表示します

  1. loadXMLDoc() を使用して「books.xml」を xmlDoc にロードします

  2. 最初のbook要素を取得します

  3. の子ノードを最初のbook要素の最初の子ノードに「y」変数を設定します

  4. 各子ノードについて(最初の子ノードは「y」から始まります) ")、ノードのタイプを確認し、ノードのタイプが「1」の場合は要素ノードです

    ​​
  5. 要素ノードの場合は、ノードの名前を出力します

  6. 「y」変数を次のように設定します次の兄弟ノードに移動し、ループを再度実行します


PHP中国語ウェブサイト