这篇文章主要介绍了JS实现兼容各浏览器解析XML文档数据的方法,涉及javascript对XML文件的解析技巧,并根据各浏览器进行了相关调整,具有良好的兼容性,需要的朋友可以参考下
本文实例讲述了JS实现兼容各浏览器解析XML文档数据的方法。分享给大家供大家参考。具体分析如下:
网站上很多用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>
希望本文所述对大家的javascript程序设计有所帮助。
新闻热点
疑难解答
图片精选