XMLDOM追加ノード
自分で試してみてください-例
以下の例では、XMLファイルbooks.xmlを使用しています。
この例では、appendChild()を使用して、既存のノードに子ノードを追加します。
この例では、insertBefore()を使用して、指定された子ノードの前にノードを挿入します。
この例では、setAttribute()メソッドを使用して新しい属性を追加します。
この例では、insertData()を使用して、既存のテキストノードにデータを挿入します。
ノードの追加-appendChild()
appendChild()メソッドは、子ノードを既存のノードに追加します。
新しいノードは、既存の子ノードの後に追加(追加)されます。
注:ノードの位置が重要な場合は、insertBefore()を使用してください。
このコードフラグメントは要素(<edition>)を作成し、最初の<book>要素の最後の子の後に追加します。
例
newEle = xmlDoc.createElement("edition");
xmlDoc.getElementsByTagName("book")[0].appendChild(newEle);
説明された例:
- 「books.xml」がxmlDocにロードされているとします。
- 新しいノードを作成する<edition>
- ノードを最初の<book>要素に追加します
このコードフラグメントは上記と同じように機能しますが、新しい要素に次の値が追加されます。
例
newEle = xmlDoc.createElement("edition");
newText=xmlDoc.createTextNode("first");
newEle.appendChild(newText);
xmlDoc.getElementsByTagName("book")[0].appendChild(newEle);
説明された例:
- 「books.xml」がxmlDocにロードされているとします。
- 新しいノードを作成する<edition>
- 「最初の」新しいテキストノードを作成します
- テキストノードを<edition>ノードに追加します
- <addition>ノードを<book>要素に追加します
ノードを挿入します-insertBefore()
insertBefore()メソッドは、指定された子ノードの前にノードを挿入します。
この方法は、追加されたノードの位置が重要な場合に役立ちます。
例
newNode = xmlDoc.createElement("book");
x = xmlDoc.documentElement;
y = xmlDoc.getElementsByTagName("book")[3];
x.insertBefore(newNode,y);
説明された例:
- 「books.xml」がxmlDocにロードされているとします。
- 新しい要素ノードを作成します<book>
- 最後の<book>要素ノードの前に新しいノードを挿入します
insertBefore()の2番目のパラメーターがnullの場合、新しいノードは最後の既存の子ノードの後に追加されます。
x.insertBefore(newNode、null)とx.appendChild(newNode)はどちらも、新しい子ノードをxに追加します。
新しい属性を追加する
setAttribute()メソッドは、属性の値を設定します。
例
xmlDoc.getElementsByTagName('book')[0].setAttribute("edition","first");
説明された例:
- 「books.xml」がxmlDocにロードされているとします。
- 最初の<book>要素の属性「edition」の値を「first」に設定します
add Attribute()と呼ばれるメソッドはあり
ません。属性が存在しない場合、setAttribute()は新しい属性を作成します。
注:属性がすでに存在する場合、setAttribute()メソッドは既存の値を上書きします。
テキストノードへのテキストの追加-insertData()
insertData()メソッドは、既存のテキストノードにデータを挿入します。
insertData()メソッドには2つのパラメーターがあります。
- オフセット-文字の挿入を開始する場所(ゼロから開始)
- string-挿入する文字列
次のコードフラグメントは、ロードされたXMLの最初の<title>要素のテキストノードに「Easy」を追加します。
例
xmlDoc.getElementsByTagName("title")[0].childNodes[0].insertData(0,"Easy ");