selectNodes/selectSingleNodeメソッド

selectNodesメソッド

●書式 var 戻り値 = Nodeオブジェクト.selectNodes(xPath式)
・戻り値・・・引数のxPath式にマッチしたノードの集合、即ちNodeListオブジェクトを返す。マッチするものが無い場合、空のNodeListを返す。
・Nodeオブジェクトは、Documentオブジェクト即ちXML文書そのものを指定(例1)。または特定のノードを指定することもできる(例3)
・引数のxPath式・・・参照したいノードのxPath式を""で囲い、文字列として渡す。

selectSingleNodeメソッド

●書式 var 戻り値 = Nodeオブジェクト.selectSingleNode(xPath式)
・戻り値・・・引数のxPath式にマッチした最初のNodeオブジェクトを返す。マッチするものが無い場合nullを返す。
・Nodeオブジェクトは、Documentオブジェクト即ちXML文書そのものを指定(例2)。または特定のノードを指定することもできる(例3)
・引数のxPath式・・・参照したいノードのxPath式を""で囲い、文字列として渡す。

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

XMLソース

<?xml version="1.0" encoding="Shift_JIS" ?>
<家系>
 <title>一族郎党</title>
 <叔父>叔父さん
  <従姉妹>叔父さんの娘</従姉妹>
 </叔父>
 <親>お父さんお母さん
  <姉>お姉さん
   <おい>お姉さんの息子</おい>
  </姉>
  <私>おいら
<子>長男
    <孫1>長男の娘
     <曾孫>長男の娘の子</曾孫>
    </孫1>
</子>
   <子>長女
    <孫2>長女の息子</孫2>
   </子>
   <子>次男</子>
  </私>
  <弟>弟
   <めい>弟の娘</めい>
  </弟>
  <妹>妹</妹>
 </親>
 <叔母>叔母さん
<従兄弟>叔母さんの息子</従兄弟>
</叔母>
<end>以上です(2004/4/23)</end>
</家系>

HTMLソース

<SCRIPT language="JavaScript"><!--
function test(){
var xmlobj=new ActiveXObject("MSXML2.DOMDocument");
xmlobj.async=false;
xmlobj.load("selectnode01.xml");
//(例1)
var objNodeList = xmlobj.selectNodes("//私/子");
var str = "私の子は <b>" + objNodeList.length + "</b> 人です<hr>";
for(i=0;i<objNodeList.length;i++){
str += objNodeList.item(i).xml + "<br>";
}
data1.innerHTML = str; //(例2)
var objSingleNode = xmlobj.selectSingleNode("//私/子");
data2.innerHTML = objSingleNode.xml; //(例3)
var objWatasi = xmlobj.selectSingleNode("//私");
var objMago1Lists = objWatasi.selectNodes("./子/孫1");
for(i=0;i<objMago1Lists.length;i++){
str = "私の1番目の孫は「" + objMago1Lists.item(i).xml + "」<br>";
}
var objMago2 = objWatasi.selectSingleNode("./子/孫2");
str += "私の2番目の孫は「" + objMago2.xml + "」";
data3.innerHTML = str;
}
//--></SCRIPT>
</HEAD>
<BODY onload=test()>
<P>selectNodesメソッドの実行結果 </P>
<div id="data1" style="margin-left:30px;border:1px solid green"></div>
<P>selectSingleNodeメソッドの実行結果 </P>
<div id="data2" style="margin-left:30px;border:1px solid green"></div>
<P>(例3) </P>
<div id="data3" style="margin-left:30px;border:1px solid green"></div>
</BODY>

end(04/4/23)