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

DOM ナビゲーション


XML DOM - ナビゲーションノード


を使用すると、ノード間の関係を使用してノードをナビゲートできます。


DOM ノードのナビゲート

ノード間の関係 (通常は「ノードのナビゲート」と呼ばれます) を通じてノード ツリー内のノードにアクセスします。

XML DOM では、ノードの関係はノードの属性として定義されます。

  • 前の兄弟

  • 下の画像は

    books.xml
  • のノードツリーのセクションを示し、ノード間の関係を示しています:
  • DOM - 親ノード

  • すべてのノードには親ノードが1つだけあります。次のコードは、<book> の親ノードに移動します:
  • インスタンス
  • <!DOCTYPE html>
    <html>
    <head>
    <script src="loadxmldoc.js"> 
    </script>
    </head>
    <body>
    
    <script>
    xmlDoc=loadXMLDoc("books.xml");
    
    x=xmlDoc.getElementsByTagName("book")[0];
    document.write(x.parentNode.nodeName);
    </script>
    </body>
    </html>

  • インスタンスの実行»

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

インスタンスの説明:

navigate (1).gif


loadXMLDoc( ) を使用します。「books.xml」を xmlDoc にロードし、最初の <book> 要素を取得します。Firefox および他の一部のブラウザーは空の空白または改行をテキスト ノードとして扱いますが、Internet Explorer は扱いません。

これにより、firstChild、lastChild、nextSibling、previousSibling のプロパティを使用するときに問題が発生します。

空のテキスト ノード (要素ノード間のスペースと改行) への移動を避けるために、関数を使用してノード タイプをチェックします:

function get_nextSibling(n)
{
y=n.nextSibling;
while (y.ノードタイプ!=1) ​ { ​ y=y.next兄弟;

​ }

return y;
}

    上記の関数を使用すると、
  1. node

    .nextSibling プロパティの代わりに get_nextSibling(

    node
  2. ) を使用できます。
  3. コードの説明:

  4. 要素ノードのタイプは1です。兄弟ノードが要素ノードでない場合は、要素ノードが見つかるまで次のノードに移動します。このようにすると、Internet Explorer と Firefox の両方で同じ結果が得られます。
  5. 最初の子要素を取得します
次のコードは、最初の <book> の最初の要素を表示します:

インスタンス

<!DOCTYPE html>
<html>
<head>
<script src="loadxmldoc.js">
</script>
<script>
//check if the first node is an element node
function get_firstChild(n)
{
y=n.firstChild;
while (y.nodeType!=1)
  {
  y=y.nextSibling;
  }
return y;
}
</script>
</head>

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

x=get_firstChild(xmlDoc.getElementsByTagName("book")[0]);
document.write(x.nodeName);
</script>
</body>
</html>

インスタンスの実行»

オンラインで表示するには、[インスタンスの実行] ボタンをクリックします例

例の説明:

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

  2. 最初の<book>要素でget_firstChild関数を使用して、(要素ノードに属する)最初の子ノードを取得します。 )

  3. 最初の子ノード(要素ノードに属する)のノード名を出力します


tryitimg.gifその他の例

lastChild()
この例では、lastChild()メソッドとカスタムノードの最後の子ノードを取得する関数

インスタンス

<!DOCTYPE html>
<html>
<head>
<script src="loadxmldoc.js">
</script>
<script>
//check if the first node is an element node
function get_lastChild(n)
{
y=n.lastChild;
while (y.nodeType!=1)
  {
  y=y.previousSibling;
  }
return y;
}
</script>
</head>

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

x=get_lastChild(xmlDoc.getElementsByTagName("book")[0]);
document.write(x.nodeName);
</script>
</body>
</html>

インスタンスの実行»

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


nextSibling()
この例では使用しますnextSibling() メソッドと、ノードの次の兄弟ノードを取得するカスタム関数

インスタンス

<!DOCTYPE html>
<html>
<head>
<script src="loadxmldoc.js">
</script>
<script>
//check if the first node is an element node
function get_nextSibling(n)
{
y=n.nextSibling;
while (y.nodeType!=1)
  {
  y=y.nextSibling;
  }
return y;
}
</script>
</head>

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

x=get_nextSibling(xmlDoc.getElementsByTagName("title")[0]);
document.write(x.nodeName);
</script>
</body>
</html>

インスタンスの実行»

オンライン インスタンスを表示するには、[インスタンスの実行] ボタンをクリックします


previousSibling()
この例previousSibling() メソッドとカスタム関数を使用して、ノードの前の兄弟ノードを取得します

Instance

<!DOCTYPE html>
<html>
<head>
<script src="loadxmldoc.js">
</script>
<script>
//check if the first node is an element node
function get_previousSibling(n)
{
y=n.previousSibling;
while (y.nodeType!=1)
  {
  y=y.previousSibling;
  }
return y;
}
</script>
</head>

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

x=get_previousSibling(xmlDoc.getElementsByTagName("price")[0]);
document.write(x.nodeName);
</script>
</body>
</html>

インスタンスの実行»

オンラインで表示するには、[インスタンスの実行] ボタンをクリックしますインスタンス