使用JS讀取XML(相容IE和firefox)

iDotNetSpace發表於2009-02-06

這次準備使用JS來讀取XML做一個例子來熟悉下,一共使用了一下幾個技術:Json,array排序,讀取xml,下面我就貼出程式碼:

第一部:我們需要學習如何判斷瀏覽器的型別:

下面是幾個主流的瀏覽器使用js的判斷方法

function getOs()
{
     var sObject = "";
    if(navigator.userAgent.indexOf("MSIE")>0) {
         return "MSIE";  
    }
    if(isFirefox=navigator.userAgent.indexOf("Firefox")>0){
         return "Firefox";
    }
    if(isSafari=navigator.userAgent.indexOf("Safari")>0) {
         return "Safari";
    }  
    if(isCamino=navigator.userAgent.indexOf("Camino")>0){
         return "Camino";
    }
    if(isMozilla=navigator.userAgent.indexOf("Gecko/")>0){
         return "Gecko";
    } 
}

通過以上方法,大家可以取出瀏覽器的型別,根據瀏覽器的不同型別,我們使用不同的方式來例項化物件:

 

下面就是我寫的所有程式碼,大家可以參考下:




    JS讀取XMLDemo

   


        function NewInfoAction()
        {
            var dom;
            var type=1;                                         //預設為IE瀏覽器
            var data = new Array();                             //儲存實體的陣列    
            
            if(navigator.userAgent.indexOf("MSIE")>0)
            {
                dom = new ActiveXObject("Microsoft.XMLDOM");    //例項化dom物件
                /*
                    這個地方很多朋友不明白,我寫詳細點
                    設定非同步處理
                    本函式不需要在XML檔案讀取完成之前進行任何操作,
                    因此關閉非同步處理功能。
                */
                dom.async = false;                              
                dom.load("NewInfo.xml");                        //載入xml檔案
                window.alert('IE');
            }
            else if(isFirefox=navigator.userAgent.indexOf("Firefox") > 0)
            {
                type=2;
                dom = document.implementation.createDocument("", "", null);         //火狐不支援ActiveXObject
                dom.async = false;
                dom.load("NewInfo.xml");
                /*  
                    這是火狐的另外一中載入xml的方式
                    var XmlHttp = new XMLHttpRequest() ;
                    oXmlHttp.open( "GET", "test.xml", false ) ;
                    oXmlHttp.send(null) ;
                    //oXmlHttp.responseXML就是xml物件了。
                */
            }
            else
            {
                window.alert('暫不識別該瀏覽器!');
                return;
            }
            
            if(dom)
            {
                var node;
                
                if(type == 1)   //判斷是否為IE瀏覽器
                {
                    node = dom.documentElement.childNodes;      //這裡的node大家可以理解為net中的表,方便大家理解
                    
                    for(var i=0;i                    {
                        var title = node[i].childNodes[0].text;                 //取出i行中的欄位的值,大家這樣理解更方便
                        var content = node[i].childNodes[1].text;
                        var date = node[i].childNodes[2].text;
                        data.push({title:title,content:content,date:date});     //在這裡,我們使用使用json,把資料庫儲存在裡面
                    }
                }
                else
                {   
                    var node = dom.getElementsByTagName("News");
                    for(var i=0;i

                    {

//                        window.alert(dom.getElementsByTagName("News")[i].childNodes[1].textContent);
//                        window.alert(dom.getElementsByTagName("News")[i].childNodes[3].textContent);
//                        window.alert(dom.getElementsByTagName("News")[i].childNodes[5].textContent);

                        var value = dom.getElementsByTagName("News")[i].textContent.split(' ');
                        var title = value[4];
                        var content = value[8];
                        var date = value[12];
                        data.push({title:title,content:content,date:date});     //在這裡,我們使用使用json,把資料庫儲存在裡面
                    }
                }
            }
            else
            {
                window.alert("dom物件為空,失敗了!");
                return;
            }
            
            if(data.length != 0)
            {
                var shtml = '';
                for(var i=0;i                {

                    shtml += '

';
                    shtml += '
';
                    shtml += data[i].title;
                    shtml += '
';
                    shtml += '
';
                    shtml += '
';
                    shtml += data[i].content;
                    shtml += '
';
                    shtml += '
';
                    shtml += data[i].date;
                    shtml += '
';
                    shtml += '
';
                    shtml += '
';
                    shtml += '
';
                }
                document.getElementById('textDiv').innerHTML = shtml;
            }
            else
            {
                document.getElementById('textDiv').innerHTML = '沒有資訊!';
            }
        }
   







 

一下是xml的檔案格式:



 
    今天要下雨
    今天確實下雨了
    2009-02-04
 

 
    今天出太陽
    今天確實出太陽了
    2009-02-03
 

 
    今天很無聊
    今天確實很無聊
    2009-02-02
 



 ok,大家把他們放到同一個資料夾裡面就ok了。

 

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/12639172/viewspace-545462/,如需轉載,請註明出處,否則將追究法律責任。

相關文章