js 解析xml檔案和xml字串
阿新 • • 發佈:2019-01-30
js解析xml檔案
<script type='text/javascript'> loadXML = function(xmlFile){ var xmlDoc=null; //判斷瀏覽器的型別 //支援IE瀏覽器 if(!window.DOMParser && window.ActiveXObject){ var xmlDomVersions = ['MSXML.2.DOMDocument.6.0','MSXML.2.DOMDocument.3.0','Microsoft.XMLDOM']; for(var i=0;i<xmlDomVersions.length;i++){ try{ xmlDoc = new ActiveXObject(xmlDomVersions[i]); break; }catch(e){ } } } //支援Mozilla瀏覽器 else if(document.implementation && document.implementation.createDocument){ try{ /* document.implementation.createDocument('','',null); 方法的三個引數說明 * 第一個引數是包含文件所使用的名稱空間URI的字串; * 第二個引數是包含文件根元素名稱的字串; * 第三個引數是要建立的文件型別(也稱為doctype) */ xmlDoc = document.implementation.createDocument('','',null); }catch(e){ } } else{ return null; } if(xmlDoc!=null){ xmlDoc.async = false; xmlDoc.load(xmlFile); } return xmlDoc; } </script>
js解析xml字串
下面是測試過程:<script type='text/javascript'> loadXML = function(xmlString){ var xmlDoc=null; //判斷瀏覽器的型別 //支援IE瀏覽器 if(!window.DOMParser && window.ActiveXObject){ //window.DOMParser 判斷是否是非ie瀏覽器 var xmlDomVersions = ['MSXML.2.DOMDocument.6.0','MSXML.2.DOMDocument.3.0','Microsoft.XMLDOM']; for(var i=0;i<xmlDomVersions.length;i++){ try{ xmlDoc = new ActiveXObject(xmlDomVersions[i]); xmlDoc.async = false; xmlDoc.loadXML(xmlString); //loadXML方法載入xml字串 break; }catch(e){ } } } //支援Mozilla瀏覽器 else if(window.DOMParser && document.implementation && document.implementation.createDocument){ try{ /* DOMParser 物件解析 XML 文字並返回一個 XML Document 物件。 * 要使用 DOMParser,使用不帶引數的建構函式來例項化它,然後呼叫其 parseFromString() 方法 * parseFromString(text, contentType) 引數text:要解析的 XML 標記 引數contentType文字的內容型別 * 可能是 "text/xml" 、"application/xml" 或 "application/xhtml+xml" 中的一個。注意,不支援 "text/html"。 */ domParser = new DOMParser(); xmlDoc = domParser.parseFromString(xmlString, 'text/xml'); }catch(e){ } } else{ return null; } return xmlDoc; } </script>
--測試用到的xml
--測試程式碼<?xml version="1.0" encoding="utf-8" ?> <DongFang> <Company> <cNname>1</cNname> <cIP>1</cIP> </Company> <Company> <cNname>2</cNname> <cIP>2</cIP> </Company> <Company> <cNname>3</cNname> <cIP>3</cIP> </Company> <Company> <cNname>4</cNname> <cIP>4</cIP> </Company> <Company> <cNname>5</cNname> <cIP>5</cIP> </Company> <Company> <cNname>6</cNname> <cIP>6</cIP> </Company> </DongFang>
var xmldoc=loadXML(text.xml)
var elements = xmlDoc.getElementsByTagName("Company");
for (var i = 0; i < elements.length; i++) {
var name = elements[i].getElementsByTagName("cNname")[0].firstChild.nodeValue;
var ip = elements[i].getElementsByTagName("cIP")[0].firstChild.nodeValue;
}
ps:文章補充部分見---js解析xml:ie和ff的不同---w3c提供的js解析xml檔案---w3c提供的js解析xml字串】