下面是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;
}