メモリ内に新規XML文書(XMLDocumentオブジェクト)を生成し利用できる。ただし、XML宣言、ルート要素などのXML要件が満たされる必要がある。
(下のサンプルは、株式情報のXML文書から条件に合致したデータだけを取り出し、新規にXML文書を構築したもの)
[サンプルHTML文書を表示](下のフレームに)
XMLソース
<?xml version="1.0" encoding="Shift_JIS" ?>
<root>
<title>2003年11月05日の東証株式第一部情報</title>
<info><name>銘柄</name><end>終値(円)</end><total>出来高(千株)</total></info>
<data>
<kabu><name code="6752">松下</name><end>1529</end><total>12302</total></kabu>
<kabu><name code="6753">シャープ</name><end>1786</end><total>3964</total></kabu>
<kabu><name code="6758">ソニー</name><end>4030</end><total>8220</total></kabu>
<kabu><name code="6764">三洋</name><end>516</end><total>7551</total></kabu>
<kabu><name code="6501">日立</name><end>692</end><total>21896</total></kabu>
<kabu><name code="6502">東芝</name><end>440</end><total>17832</total></kabu>
<kabu><name code="6701">NEC</name><end>1027</end><total>19229</total></kabu>
<kabu><name code="6702">富士通</name><end>708</end><total>16634</total></kabu> </data>
<end>以上です(2004/5/4)</end>
</root>
HTMLソース
<SCRIPT language="JavaScript"><!--
function test1(){ //元のXML文書を表示
var xmlobj=new ActiveXObject("MSXML2.DOMDocument");
xmlobj.async=false;
xmlobj.load("table01.xml");
dv.innerText = xmlobj.xml;
}
function test2(){
var xmlobj=new ActiveXObject("MSXML2.DOMDocument");
xmlobj.async=false;
xmlobj.load("table01.xml");
var newxmlobj=new ActiveXObject("MSXML2.DOMDocument");//新規XML文書を生成
var X=newxmlobj.createProcessingInstruction("xml","version='1.0'");//XML宣言
newxmlobj.appendChild(X);
var newRoot=newxmlobj.createElement("株式情報"); //ルート要素の生成
newRoot.text=xmlobj.selectSingleNode("//title").text;//ルート要素のテキスト
var objKabus=xmlobj.getElementsByTagName("kabu");
for(i=0;i<objKabus.length;i++){
//元XML文書から出来高が1万株以上のデータを取り出す
if(parseInt(objKabus.item(i).selectSingleNode("total").text) >= 10000){
//取り出したデータを新規XML文書に追加していく
newRoot.appendChild(objKabus.item(i));
}
}
newxmlobj.appendChild(newRoot);
dv.innerText = newxmlobj.xml;
}
//--></SCRIPT>
</HEAD>
<BODY>
<BUTTON onclick="test1()"> 元のXML文書を表示</BUTTON><BR>
元XML文書から出来高1万株以上のデータだけを抽出した
<BUTTON onclick="test2()"> 新規に生成したXML文書を表示</BUTTON><BR><BR>
<DIV id="dv" style="margin-left:20px;border:1px solid green"> </DIV>
end(04/5/8)