子ノードの置換と挿入

replaceChild()メソッド

・Nodeオブジェクトのメソッドで、あるノードを別のノードで置き換える。
・(書式) 戻り値 = Nodeオブジェクト.replaceChild(新Nodeオブジェクト,置換されるNodeオブジェクト)

insertBefore()メソッド

・Nodeオブジェクトのメソッドで、あるノードの前にノードを挿入する
・(書式) 戻り値 = Nodeオブジェクト.insertBefore(挿入するNodeオブジェクト,Nodeオブジェクト)
・第二引数の直前に挿入する。最後に挿入する場合は、第二引数にnullを指定する。

[サンプルHTML文書を表示](下のフレームに)

XMLソース

<?xml version="1.0" encoding="Shift_JIS" ?>
<root>
<data>
<kabu><name code="6753">シャープ</name></kabu>
<kabu><name code="6501">日立</name></kabu>
<kabu><name code="6701">NEC</name></kabu>
<kabu><name code="6702">富士通</name></kabu>
</data>
</root>

HTMLソース

<SCRIPT language="JavaScript"><!--
function test1(){
var xmlobj=new ActiveXObject("MSXML2.DOMDocument");
xmlobj.async=false;
xmlobj.load("child01.xml");
var objChilds = xmlobj.selectSingleNode("//data").childNodes;
var str = "置換・挿入前の内容は";
for(i=0;i<objChilds.length;i++){
str += "\n\t" + objChilds(i).xml;
}
dv.innerText = str;
}
function test2(){
var xmlobj=new ActiveXObject("MSXML2.DOMDocument");
xmlobj.async=false;
xmlobj.load("child01.xml");
//"松下"の関連ノードを生成
var objNewKabu1 = xmlobj.createElement("kabu");
var objNewName1 = xmlobj.createElement("name");
objNewName1.text = "松下";
objNewName1.setAttribute("code","6752");
objNewKabu1.appendChild(objNewName1);
//"ソニー"の関連ノードを生成
var objNewKabu2 = xmlobj.createElement("kabu");
var objNewName2 = xmlobj.createElement("name");
objNewName2.text = "ソニー";
objNewName2.setAttribute("code","6758");
objNewKabu2.appendChild(objNewName2);
var objData = xmlobj.selectSingleNode("//data");
var objChilds = objData.childNodes;
objData.replaceChild(objNewKabu1,objChilds(1));//日立を松下に置換
objData.insertBefore(objNewKabu2,objData.lastChild);//ソニーを挿入
var str = "置換・挿入後の内容は";
for(i=0;i<objChilds.length;i++){
str += "\n\t" + objChilds(i).xml;
}
dv.innerText = str;
}
//--></SCRIPT>
</HEAD>
<BODY>
<BUTTON onclick="test1()"> 元の内容を表示</BUTTON><BR>
<P>"日立"を"松下"に置換し、最後から2番目の位置に"ソニー"を挿入する</P>
<BUTTON onclick="test2()">子ノードの置換と挿入</BUTTON><BR><BR>
<DIV id="dv" style="margin-left:20px;border:1px solid green">&nbsp;&nbsp;</DIV>

end(04/5/7)