XML DOM ノード追加

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

関数 loadXMLDoc()外部 JavaScript 内に位置し、XML ファイルの読み込みに使用されます。

最後の子ノードの後にノードを追加します
この例では、appendChild() メソッドを使用して既存のノードに子ノードを追加します。
指定された子ノードの前にノードを追加します
この例では、insertBefore() メソッドを使用して指定された子ノードの前にノードを挿入します。
新しい属性を追加します
この例では、setAttribute() メソッドを使用して新しい属性を追加します。
テキストノードにデータを追加します
この例では、insertData() を使用して既存のテキストノードにデータを挿入します。

ノードを追加 - appendChild()

appendChild() メソッドは既存のノードに子ノードを追加します。

新しいノードは既存のすべての子ノードの後に追加(追加)されます。

注:ノードの位置が重要な場合、insertBefore() メソッドを使用してください。

以下のコードスニペットは要素(<edition>)を作成し、最初の <book> ノードの最後の子ノードの後に追加します:

xmlDoc=loadXMLDoc("books.xml");
newel=xmlDoc.createElement("edition");
x=xmlDoc.getElementsByTagName("book")[0];
x.appendChild(newel);

例解:

  1. 使用することで loadXMLDoc() 「」books.xml「読み込む xmlDoc に」
  2. 新しいノード <edition> を作成します
  3. このノードを最初の <book> ノードに追加します

TIY

ループを回し、すべての <book> ノードに要素を追加します:TIY

ノードを挿入 - insertBefore()

insertBefore() メソッドは指定された子ノードの前にノードを挿入するために使用されます。

追加されるノードの位置が重要な場合、このメソッドは非常に有用です。

xmlDoc=loadXMLDoc("books.xml");
newNode=xmlDoc.createElement("book");
x=xmlDoc.documentElement;
y=xmlDoc.getElementsByTagName("book")[3];
x.insertBefore(newNode,y);

例解:

  1. 使用することで loadXMLDoc() 「」books.xml「読み込む xmlDoc に」
  2. 新しい要素ノード <book> を作成します
  3. このノードを最後の <book> 元素ノードの前に挿入します

TIY

insertBefore() の第2引数が null であれば、新しいノードは最後の既存の子ノードの後に追加されます。

x.insertBefore(newNode,null) および x.appendChild(newNode) すべて x に新しい子ノードを追加することができます。

新しい属性を追加する

addAtribute() このメソッドは存在しません。

属性が存在しない場合、setAttribute() は新しい属性を作成できます:

xmlDoc=loadXMLDoc("books.xml");
x=xmlDoc.getElementsByTagName('book');
x[0].setAttribute("edition","first");

例解:

  1. 使用することで loadXMLDoc() 「」books.xml「読み込む xmlDoc に」
  2. 最初の <book> 元素の "edition" 属性の値を(作成して)"first" に設定します:

TIY

注:属性が既に存在する場合、setAttribute() メソッドは既存の値をオーバーライドします。

テキストノードにテキストを追加 - insertData()

insertData() メソッドは、すでにあるテキストノードにデータを挿入します。

insertData() メソッドには 2 つのパラメータがあります:

  • offset - 插入を開始する場所(0から始まる)
  • string - 插入する文字列

以下のコードスライスは、読み込まれた XML の最初の <title> 元素のテキストノードに "Easy" を追加します:

xmlDoc=loadXMLDoc("books.xml");
x=xmlDoc.getElementsByTagName("title")[0].childNodes[0];
x.insertData(0,"Hello ");

TIY