A-A+

javascript中XMLDOM和parseXML解析xml实现代码

2016年01月14日 前端设计 暂无评论 阅读 6 views 次

本文章来介绍了关于javascript中XMLDOM和parseXML解析xml实现代码,有需要的同学可看看用法与参考方法,通常我们有如下的需求.

第一步:

我们可以定义一个方法(只用有人调用,就直接返回解析器),代码如下:

  1. function parseXML(file){  
  2.    try //Internet Explorer---ie浏览器的解析器创建方式如下:  
  3.    {  
  4.     xmlDoc = new ActiveXObject("Microsoft.XMLDOM");  
  5.    }  
  6.    catch (e) {  
  7.     try //Firefox, Mozilla, Opera, etc. 火狐等浏览器的创建方式。  
  8.     {  
  9.      xmlDoc = document.implementation.createDocument(""""null);  
  10.     }  
  11.     catch (e) {  
  12.      alert(e.message);  
  13.      return;   //如果创建不成功,就直接返回,不往下走。  
  14.     }  
  15.    }  
  16.    xmlDoc.async = false;  
  17.    xmlDoc.load(file);  
  18.    return xmlDoc;   //返回创建好的解析器,传给调用者。  
  19.   }  

第二步:

在js中直接调用方法来获得解析器,代码如下:

  1. <script language="JavaScript">  
  2. window.onload = function(){  
  3. var xmlDoc = parseXML("file.xml");   
  4. //调用上面我们定义的方法,给方法一个参数,参数就是你要解析的xml文件,得到这个文件的对象,也就相当于把xml文件包装成了一个document。  
  5. }  

parseXML参考,XML 解析,代码如下:

  1. XML.newDocument = function(rootTagName, namespaceURL) {  
  2.     if (!rootTagName) rootTagName = "";  
  3.     if (!namespaceURL) namespaceURL = "";  
  4.     if (document.implementation && document.implementation.createDocument) {  
  5.         // This is the W3C standard way to do it  
  6.         return document.implementation.createDocument(namespaceURL,  
  7.                                                       rootTagName, null);  
  8.     }  
  9.     else { // This is the IE way to do it  
  10.         // Create an empty document as an ActiveX object  
  11.         // If there is no root element, this is all we have to do  
  12.         var doc = new ActiveXObject("MSXML2.DOMDocument");  
  13.         // If there is a root tag, initialize the document  
  14.         if (rootTagName) {  
  15.             // Look for a namespace prefix  
  16.             var prefix = "";  
  17.             var tagname = rootTagName;  
  18.             var p = rootTagName.indexOf(':');  
  19.             if (p != -1) {  
  20.                 prefix = rootTagName.substring(0, p);  
  21.                 tagname = rootTagName.substring(p+1);  
  22.             }  
  23.             // If we have a namespace, we must have a namespace prefix  
  24.             // If we don't have a namespace, we discard any prefix  
  25.             if (namespaceURL) {  
  26.                 if (!prefix) prefix = "a0"// What Firefox uses  
  27.             }  
  28.             else prefix = "";  
  29.             // Create the root element (with optional namespace) as a  
  30.             // string of text  
  31.             var text = "<" + (prefix?(prefix+":"):"") +  tagname +  
  32.                 (namespaceURL  
  33.                  ?(" xmlns:" + prefix + '="' + namespaceURL +'"')  
  34.                  :"") +  
  35.                 "/>";  
  36.             // And parse that text into the empty document  
  37.             doc.loadXML(text);  
  38.         }  
  39.         return doc;  
  40.     }  
  41. };  
  42. function loadFromUrl(url) {  
  43.     // Create a new document with the previously defined function  
  44.     var xmldoc = XML.newDocument( );  
  45.     xmldoc.async = false;  // We want to load synchronously  
  46.     xmldoc.load(url);      // Load and parse  
  47.     return xmldoc;         // Return the document  
  48. }  
  49. function xmlToString(xmlDoc)  
  50. {  
  51.     var xmlString;  
  52.     try  
  53.     {  
  54.         if (navigator.appName == "Microsoft Internet Explorer")  
  55.         {  
  56.             xmlString = xmlDoc.xml;  
  57.         }  
  58.         else  
  59.         {  
  60.             xmlString = new XMLSerializer().serializeToString( xmlDoc );  
  61.         }  
  62.     }  
  63.     catch (e)  
  64.     {  
  65.         xmlString = null;  
  66.     }  
  67.     return xmlString;  
  68. }  
  69.    
  70. function stringToXMLDoc(str)  
  71. {  
  72.     var xmlDoc = null;  
  73.     try  
  74.     {  
  75.         var xmlDOMObj = new ActiveXObject("Microsoft.XMLDOM");  
  76.         xmlDOMObj.async = false;  
  77.         xmlDOMObj.loadXML(str);  
  78.         xmlDoc = xmlDOMObj;  
  79.     }  
  80.     catch (e)  
  81.     {  
  82.         try  
  83.         {  
  84.             var domParser = new DOMParser;  
  85.             xmlDoc = domParser.parseFromString(str, 'text/xml');  
  86.         }  
  87.         catch (e)  
  88.         {  
  89.             xmlDoc = null;  
  90.         }  
  91.     }  
  92.     return xmlDoc;  
  93.    
  94. }  
  95. function stringToXMLDoc(str) {  
  96.     if (typeof DOMParser != "undefined") {  
  97.         // Mozilla, Firefox, and related browsers  
  98.         return (new DOMParser( )).parseFromString(text, "application/xml");  
  99.     }  
  100.     else if (typeof ActiveXObject != "undefined") {  
  101.         // Internet Explorer.  
  102.         var doc = XML.newDocument( );  // Create an empty document  
  103.         doc.loadXML(text);            // Parse text into it  
  104.         return doc;                   // Return it  
  105.     }  
  106.     else {  
  107.         // As a last resort, try loading the document from a data: URL  
  108.         // This is supposed to work in Safari. Thanks to Manos Batsis and  
  109.         // his Sarissa library (sarissa.sourceforge.net) for this technique.  
  110.         var url = "data:text/xml;charset=utf-8," + encodeURIComponent(text);  
  111.         var request = new XMLHttpRequest( );  
  112.         request.open("GET", url, false);  
  113.         request.send(null);  
  114.         return request.responseXML;  
  115.     }  
  116. }  
  117.   
  118. </script>  
标签:

给我留言