属性ノードの追加と削除

createAttribute()メソッド

・Documentオブジェクトのメソッドで、Attributeノード(属性)を生成する。
・(書式) 戻り値 = Documentオブジェクト.createAttribute(属性名)
・戻り値・・・生成されたAttributeノード
*setAttributeNode()メソッドを使いXML文書に追加する。属性値はNodeオブジェクトのnodeValueプロパティやtextプロパティ、またはAttributeオブジェクトのvalueプロパティで設定する。

setAttributeNode()メソッド

・Elementオブジェクトのメソッドで、引数の属性ノードを追加または更新する
・(書式) 戻り値 = Elementオブジェクト.setAttributeNode(Attributeオブジェクト)
・戻り値・・・既にその属性が存在している場合は値を更新する。元のAttributeオブジェクトを返す。新規に追加された場合はnullを返す。

setAttribute()メソッド

・Elementオブジェクトのメソッドで、引数で指定された名前と値を持つ属性を追加する。既にその属性名が存在している場合、値を更新する。ダイレクトに属性名とその属性値を設定できるので便利。
・(書式) 戻り値 = Elementオブジェクト.setAttribute("属性名","属性値")
・戻り値・・・なし

removeAttributeNode()メソッド

・Elementオブジェクトのメソッドで、引数で指定したAttributeオブジェクトを削除する
・(書式) 戻り値 = Elementオブジェクト.removeAttributeNode(Attributeオブジェクト)
・戻り値・・・削除されたAttributeオブジェクト

removeAttribute()メソッド

・Elementオブジェクトのメソッドで、引数で指定した属性を削除する
・(書式) 戻り値 = Elementオブジェクト.removeAttribute("属性名")
・戻り値・・・なし

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

XMLソース

<?xml version="1.0" encoding="Shift_JIS" ?>
<家系>
<親>お父さんお母さん
<姉>お姉さん</姉>
<私>
<長男><孫1>長男の娘</孫1></長男>
<長女><孫2>長女の息子</孫2></長女>
<次男 年齢="40">下の息子</次男>
<次女 年齢="33">下の娘</次女>
</私>
<弟>おとうと</弟>
</親>
</家系>

HTMLソース

<SCRIPT language="JavaScript"><!--
//元の内容を表示 function test1(){
var xmlobj=new ActiveXObject("MSXML2.DOMDocument");
xmlobj.async=false;
xmlobj.load("attri03.xml");
var objChilds = xmlobj.selectSingleNode("//私").childNodes;
var str = "私の子供は";
for(i=0;i<objChilds.length;i++){
str += "<br>&nbsp;&nbsp;" + objChilds(i).xml;
}
dv.innerHTML = str;
} //属性ノードの追加と削除の結果を表示
function test2(){
var xmlobj=new ActiveXObject("MSXML2.DOMDocument");
xmlobj.async=false;
xmlobj.load("attri03.xml");
var objAttri1 = xmlobj.createAttribute("年齢");
objAttri1.value = "50";
xmlobj.selectSingleNode("//長男").setAttributeNode(objAttri1);
xmlobj.selectSingleNode("//長女").setAttribute("年齢","45");
var objAttri2 = xmlobj.selectSingleNode("//次男").getAttributeNode("年齢");
xmlobj.selectSingleNode("//次男").removeAttributeNode(objAttri2);
xmlobj.selectSingleNode("//次女").removeAttribute("年齢");
var objChilds = xmlobj.selectSingleNode("//私").childNodes;
var str = "私の子供は";
for(i=0;i<objChilds.length;i++){
str += "<br>&nbsp;&nbsp;" + objChilds(i).xml;
}
dv.innerHTML = str;
}
//--></SCRIPT>
</HEAD>
<BODY>
<BUTTON onclick="test1()">元の内容</BUTTON><BR><BR>
<BUTTON onclick="test2()">属性ノードの追加と削除</BUTTON><BR><BR>
<DIV id="dv" style="margin-left:20px;border:1px solid green">&nbsp;&nbsp;</DIV>

end(04/5/6)