JS解析XML文檔中的資料(相容各個瀏覽器)

來源:互聯網
上載者:User

網站上很多用JS解析XML文檔的資料或多或少都有點問題,

以下是自己總結的代碼,用來解析XML文檔,相容各個瀏覽器。


parseXMLDOM.js代碼:

/* * 純JS解析XML文檔(相容各個瀏覽器) */function parseXMLDOM(){    var _browserType = "";    var _xmlFile = "";    var _XmlDom = null;    return {        "getBrowserType" : function(){            return _browserType;        },        "setBrowserType" : function(browserType){            _browserType = browserType;        },        "getXmlFile" : function(){            return _xmlFile;        },        "setXmlFile" : function(xmlFile){            _xmlFile = xmlFile;        },        "getXmlDom" : function(){            return _XmlDom;        },        "setXmlDom" : function(XmlDom){            _XmlDom = XmlDom;        },        "getBrowserType" : function(){            var browserType = "";            if(navigator.userAgent.indexOf("MSIE") != -1){                browserType = "IE";            }else if(navigator.userAgent.indexOf("Chrome") != -1){                browserType = "Chrome";            }else if(navigator.userAgent.indexOf("Firefox") != -1){                browserType = "Firefox"            }            return browserType;        },        "createXmlDom" : function(xmlDom){            if(this.getBrowserType() == "IE"){//IE瀏覽器                xmlDom = new ActiveXObject('Microsoft.XMLDOM');                xmlDom.async = false;                xmlDom.load(this.getXmlFile());            }else{                var xmlhttp = new XMLHttpRequest();                xmlhttp.open("GET", this.getXmlFile(), false);                xmlhttp.send(null);                xmlDom = xmlhttp.responseXML;            }            return xmlDom;        },        "parseXMLDOMInfo" : function(){            var xmlDom = this.getXmlDom();            if(this.getBrowserType() == "IE"){                var bookObj = xmlDom.selectNodes("books/book");                if(typeof(bookObj) != "undifined"){                    var strHtml="";                    for(var i = 0; i < bookObj.length; i++){                        strHtml += bookObj[i].selectSingleNode("isbn").text;                        strHtml += " ";                        strHtml += bookObj[i].selectSingleNode("price").text;                        strHtml += " ";                        strHtml += bookObj[i].selectSingleNode("title").text;                        if(i != bookObj.length - 1){                            strHtml += "<br>";                        }                    }                }            }else{                var book = xmlDom.getElementsByTagName("book");                 var strHtml="";                for(var i = 0;i <  book.length;i++){                    strHtml += book[i].getElementsByTagName("isbn")[0].textContent;                    strHtml += " ";                    strHtml += " ";                    strHtml += book[i].getElementsByTagName("price")[0].textContent;                    strHtml += " ";                    strHtml += book[i].getElementsByTagName("title")[0].textContent;                    if(i != book.length - 1){                        strHtml += "<br>";                    }                }            }            document.getElementById("msg").innerHTML = strHtml;        }    }}window.onload = function(){    var parseObj = new parseXMLDOM();    //設定瀏覽器類型    parseObj.setBrowserType(parseObj.getBrowserType());    //設定檔案路徑    parseObj.setXmlFile("test.xml");    //建立XMLDOM    parseObj.setXmlDom(parseObj.createXmlDom(null));    //解析XMLDOM    parseObj.parseXMLDOMInfo();}

index.html代碼

<!DOCTYPE html><html>    <head>        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">        <title>JS解析XML文檔中的資料(相容所有瀏覽器)</title>        <script language="javascript" type="text/javascript" src="js/parseXMLDOM.js"></script>    </head>    <body>        <span id="msg"></span>    </body></html>

test.xml代碼

<?xml version="1.0" encoding="UTF-8"?><books>    <book>        <isbn>2207-1258-123</isbn>        <price>25</price>        <title>Javascript</title>    </book>    <book>        <isbn>2207-1258-456</isbn>        <price>50</price>        <title>Ajax</title>    </book>    <book>        <isbn>2207-1258-789</isbn>        <price>75</price>        <title>C#</title>    </book></books>

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.