★attributesプロパティ
・Nodeオブジェクトのプロパティ
・(書式)NamedNodeMapオブジェクト = Nodeオブジェクト.attributes
・指定したNodeオブジェクトが持つ属性集合(NamedNodeMapオブジェクト)を返す。属性が無い場合nullを返す。
★NamedNodeMapオブジェクト
・現在のノードに含まれるattribute(属性)ノードの集合
・lengthプロパティ・・・含まれる属性数
・getNamedItem("属性名")メソッド・・・指定した属性名を持つattributeノードを返す。
・getQualifiedItem("属性名","名前空間プレフィックス")メソッド・・・名前空間付きの指定した属性名を持つattributeノードを返す。
・item(index番号)メソッド・・・0から始まるindex番号位置のattributeノードを返す。
*attributes(index番号)としても同じこと。
*NamedNodeMapコオブジェクトの変数(index番号)でもよい。
★属性名と属性値は、Attributeオブジェクトのnameプロパティ/valueプロパティで、またはNodeオブジェクトのnodeNameプロパティ/nodeValueプロパティで取得できる。またNodeオブジェクトのtextプロパティを使っても属性値は取得できる。
★getAttributeNodeメソッド
・Elementオブジェクトのメソッド。
・(書式)戻り値 = Elementオブジェクト.getAttributeNode("属性名")
・戻り値・・・引数で指定した属性名をもつAttributeノード、存在しない場合nullを返す。
★getAttributeメソッド
・Elementオブジェクトのメソッド
・(書式)戻り値 = Elementオブジェクト.getAttribute("属性名")
・戻り値・・・指定した属性名の属性値をダイレクトに返す。値が無い場合、空文字列が返される。
[サンプルを表示](下のフレームに)
XMLソース
<?xml version="1.0" encoding="Shift_JIS" ?>
<root>
<title>属性の活用</title>
<data>
<社長 本籍="鳥取県" 現住所="大阪市" 年齢="58" TEL="06-1234-5678">山陰太郎</社長>
<専務 本籍="兵庫県" 現住所="大阪市" 年齢="50" TEL="06-9876-5432">山陽華子</専務>
<社員A 本籍="大阪府" 現住所="堺市" 年齢="32" TEL="0722-96-0001">駄目一</社員A>
</data>
</root>
HTMLソース
function Test(n){
var xmlobj=new ActiveXObject("MSXML2.DOMDocument");
xmlobj.async=false;
xmlobj.load("attri01.xml");
var str = "";
if(n == 1){
var objatts = xmlobj.selectSingleNode("//社長").attributes;
str = "社長の属性数は " + objatts.length + "個<br>";
str += objatts.item(0).name + " 属性の値は:" +objatts.item(0).value + "<br>";
str += objatts.item(1).name + " 属性の値は:" +objatts.item(1).value + "<br>";
str += objatts.item(2).nodeName + " 属性の値は:" +objatts.item(2).nodeValue + "<br>";
str += objatts.item(3).nodeName + " 属性の値は:" +objatts.item(3).text + "<br>";
}else if(n == 2){
var objatts = xmlobj.selectSingleNode("//専務").attributes;
str = "専務の属性数は " + objatts.length + "個<br>";
str += "本籍 属性の値は:" + objatts.getNamedItem("本籍").value + "<br>";
str += "現住所 属性の値は:" + objatts.getQualifiedItem("現住所","").value + "<br>";
str += "年齢 属性の値は:" + xmlobj.selectSingleNode("//専務").getAttributeNode("年齢").value + "<br>";
str += "TEL 属性の値は:" + xmlobj.selectSingleNode("//専務").getAttribute("TEL");
}else{
var objatts = xmlobj.selectSingleNode("//社員A").attributes;
str = "社員Aの属性数は " + objatts.length + "個<br>";
str += xmlobj.selectSingleNode("//社員A").attributes(0).name + " 属性の値は:"
+ xmlobj.selectSingleNode("//社員A").attributes(0).value + "<br>";
str += xmlobj.selectSingleNode("//社員A").attributes(1).nodeName +" 属性の値は:"
+ xmlobj.selectSingleNode("//社員A").attributes(1).nodeValue + "<br>";
str += objatts(2).name +" 属性の値は:" + objatts(2).value + "<br>";
str += objatts(3).nodeName +" 属性の値は:" + objatts(3).nodeValue;
}
dv.innerHTML = str;
}
//--></SCRIPT>
</HEAD>
<BODY>
<BUTTON onclick="Test(1)">(test1)”社長”の属性</BUTTON><BR><BR>
<BUTTON onclick="Test(2)">(test2)”専務”の属性</BUTTON><BR><BR>
<BUTTON onclick="Test(3)">(test3)”社員A”の属性</BUTTON><BR><BR>
<DIV id="dv" style="margin-left:20px;border:1px solid green"> </DIV>
end(04/4/29)