首页 > 语言 > JavaScript > 正文

JS实现兼容各浏览器解析XML文档数据的方法

2024-05-06 16:21:08
字体:
来源:转载
供稿:网友

这篇文章主要介绍了JS实现兼容各浏览器解析XML文档数据的方法,涉及javascript对XML文件的解析技巧,并根据各浏览器进行了相关调整,具有良好的兼容性,需要的朋友可以参考下

本文实例讲述了JS实现兼容各浏览器解析XML文档数据的方法。分享给大家供大家参考。具体分析如下:

网站上很多用JS解析XML文档的资料或多或少都有点问题,

以下是自己总结的代码,用来解析XML文档,兼容各个浏览器。

parseXMLDOM.js代码:

 

 
  1. /*  
  2. * 纯JS解析XML文档(兼容各个浏览器)  
  3. */ 
  4. function parseXMLDOM(){  
  5. var _browserType = "";  
  6. var _xmlFile = "";  
  7. var _XmlDom = null;  
  8. return {  
  9. "getBrowserType" : function(){  
  10. return _browserType;  
  11. },  
  12. "setBrowserType" : function(browserType){  
  13. _browserType = browserType;  
  14. },  
  15. "getXmlFile" : function(){  
  16. return _xmlFile;  
  17. },  
  18. "setXmlFile" : function(xmlFile){  
  19. _xmlFile = xmlFile;  
  20. },  
  21. "getXmlDom" : function(){  
  22. return _XmlDom;  
  23. },  
  24. "setXmlDom" : function(XmlDom){  
  25. _XmlDom = XmlDom;  
  26. },  
  27. "getBrowserType" : function(){  
  28. var browserType = "";  
  29. if(navigator.userAgent.indexOf("MSIE") != -1){  
  30. browserType = "IE";  
  31. }else if(navigator.userAgent.indexOf("Chrome") != -1){  
  32. browserType = "Chrome";  
  33. }else if(navigator.userAgent.indexOf("Firefox") != -1){  
  34. browserType = "Firefox" 
  35. }  
  36. return browserType;  
  37. },  
  38. "createXmlDom" : function(xmlDom){  
  39. if(this.getBrowserType() == "IE"){//IE浏览器  
  40. xmlDom = new ActiveXObject('Microsoft.XMLDOM');  
  41. xmlDom.async = false;  
  42. xmlDom.load(this.getXmlFile());  
  43. }else{  
  44. var xmlhttp = new XMLHttpRequest();  
  45. xmlhttp.open("GET"this.getXmlFile(), false);  
  46. xmlhttp.send(null);  
  47. xmlDom = xmlhttp.responseXML;  
  48. }  
  49. return xmlDom;  
  50. },  
  51. "parseXMLDOMInfo" : function(){  
  52. var xmlDom = this.getXmlDom();  
  53. if(this.getBrowserType() == "IE"){  
  54. var bookObj = xmlDom.selectNodes("books/book");  
  55. if(typeof(bookObj) != "undifined"){  
  56. var strHtml="";  
  57. for(var i = 0; i < bookObj.length; i++){  
  58. strHtml += bookObj[i].selectSingleNode("isbn").text;  
  59. strHtml += " ";  
  60. strHtml += bookObj[i].selectSingleNode("price").text;  
  61. strHtml += " ";  
  62. strHtml += bookObj[i].selectSingleNode("title").text;  
  63. if(i != bookObj.length - 1){  
  64. strHtml += "<br>";  
  65. }  
  66. }  
  67. }  
  68. }else{  
  69. var book = xmlDom.getElementsByTagName("book");  
  70. var strHtml="";  
  71. for(var i = 0;i < book.length;i++){  
  72. strHtml += book[i].getElementsByTagName("isbn")[0].textContent; 
  73. strHtml += " ";  
  74. strHtml += " ";  
  75. strHtml += book[i].getElementsByTagName("price")[0].textContent; 
  76. strHtml += " ";  
  77. strHtml += book[i].getElementsByTagName("title")[0].textContent;  
  78. if(i != book.length - 1){  
  79. strHtml += "<br>";  
  80. }  
  81. }  
  82. }  
  83. document.getElementById("msg").innerHTML = strHtml;  
  84. }  
  85. }  
  86. }  
  87. window.onload = function(){  
  88. var parseObj = new parseXMLDOM();  
  89. //设置浏览器类型  
  90. parseObj.setBrowserType(parseObj.getBrowserType());  
  91. //设置文件路径  
  92. parseObj.setXmlFile("test.xml");  
  93. //创建XMLDOM  
  94. parseObj.setXmlDom(parseObj.createXmlDom(null));  
  95. //解析XMLDOM  
  96. parseObj.parseXMLDOMInfo();  

index.html代码:

 

 
  1. <!DOCTYPE html>  
  2. <html>  
  3. <head>  
  4. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">  
  5. <title>JS解析XML文档中的数据(兼容所有浏览器)</title>  
  6. <script language="javascript" type="text/javascript" src="js/parseXMLDOM.js"></script>  
  7. </head>  
  8. <body>  
  9. <span id="msg"></span>  
  10. </body>  
  11. </html> 

test.xml代码:

 

 
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <books>  
  3. <book>  
  4. <isbn>2207-1258-123</isbn>  
  5. <price>25</price>  
  6. <title>Javascript</title>  
  7. </book>  
  8. <book>  
  9. <isbn>2207-1258-456</isbn>  
  10. <price>50</price>  
  11. <title>Ajax</title>  
  12. </book>  
  13. <book>  
  14. <isbn>2207-1258-789</isbn>  
  15. <price>75</price>  
  16. <title>C#</title>  
  17. </book>  
  18. </books> 

希望本文所述对大家的javascript程序设计有所帮助。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

图片精选