下面是JS利用DOM遍歷XML文件的函數,限於篇幅,沒有貼出所有代碼..如有需要,請留言
function LoadXmlFile(obj)
{
//obj 可以是文本框,或是他什麽控件 ,
//document.all(obj).value獲取XML文件的名稱
//調用loadXMLDoc函數
var xmlDoc=loadXMLDoc(document.all(obj).value);
try
{
//獲取DOM 树的根节點
var strName=xmlDoc.nodeName;
var strType=xmlDoc.nodeType;
var strvalue=xmlDoc.childNodes[0].nodeValue;
//調用insertRow函數將資料插入畫面
insertRow(strName,strType,strvalue);
//獲取根節點的子節點
var y=xmlDoc.documentElement.childNodes;
for (i=0;i<y.length;i++)
{
//避免讀取文本節點,
//文本加點的childNodes[0].nodeValue為NULL,會報錯
//有關節點類型(nodeType),請參閱相關知識
if (y[i].nodeType!=3)
{
//獲取根節點下的子節點
strName= y[i].nodeName;
strType=y[i].nodeType;
strvalue=y[i].childNodes[0].nodeValue;
insertRow(strName,strType,strvalue);
for (z=0;z<y[i].childNodes.length;z++)
{
if (y[i].childNodes[z].nodeType!=3)
{
//獲取子節點的元素
strName=y[i].childNodes[z].nodeName;
strType=y[i].childNodes[z].nodeType;
strvalue=y[i].childNodes[z].childNodes[0].nodeValue;
insertRow(strName,strType,strvalue);
}
}
}
}
}
catch(e)
{
alert(e.message);
}
}
//加載XML的函數,dname為文件名
function loadXMLDoc(dname)
{
var xmlDoc;
try //Internet Explorer
{
xmlDoc=new ActiveXObject('Microsoft.XMLDOM');
}
catch(e)
{
try //Firefox, Mozilla, Opera, etc.
{
xmlDoc=document.implementation.createDocument("","",null);
}
catch(e)
{
alert(e.message);
}
}
try
{
xmlDoc.async=false;
//有時候會出現文件夾權限的文件導致XML文件無法訪問,
//所以如果是學習的話將XML和程式放在一個文件夾下可避免此問題
xmlDoc.load(dname);
//此處books.xml與程式在一個文件夾下
// xmlDoc.load('books.xml');
return(xmlDoc);
}
catch(e)
{
alert(e.message);
}
return(null);
}
//將數據插入前臺頁面控件
function insertRow(strName,strType,strvalue)
{
//tbl為表名,也可是Grid名稱
var nRow=document.all.tbl.rows.length; //表格的總行數
var objTheRow=document.all.tbl.insertRow(nRow);//在最下邊新增一行
objTheRow.insertCell(0).innerText=strName;
objTheRow.insertCell(1).innerText=strType;
objTheRow.insertCell(2).innerText=strvalue;
return false;
}