js便簽筆記(8)——js加載XML字符串或文件


1. 加載XML文件

方法1:ajax方式。代碼如下:

var xhr = window.XMLHttpRequest ? new XMLHttpRequest() : new ActiveXObject("Microsoft.XMLHTTP");
xhr.open("GET", "data.xml", false);
xhr.send(null);
var xmlDoc = xhr.responseXML;
console.log(xmlDoc); 

(關於XMLHttpRequest對象的用法,請參加 http://www.w3school.com.cn/xmldom/dom_http.asp

注意,代碼第二行的“false”,表示不用異步。如果這里改為“true”,那么xmlDoc將得到null。因為js的異步操作,不會等待文件加載完,就直接執行下面的語句了。所以,我們這里必須設置為“false”,表示必須等待文件加載完,再執行以下操作,這樣才能得到正確的xmlDoc。

這種方式兼容所有高級瀏覽器,建議采用這種方式加載。

 

方法2:IE的方式。代碼如下:

var xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
xmlDoc.async = "false";
xmlDoc.load("note.xml");
console.log(xmlDoc); 

通過IE特有的ActiveXObject("Microsoft.XMLDOM")對象的load()方法加載文件。

注意,這里還是設置了異步是false,原因和方法1的一樣。

 

方法3:Firefox的方式,代碼如下:

var xmlDoc = document.implementation.createDocument("", "", null);
xmlDoc.async = "false";
xmlDoc.load("note.xml");
console.log(xmlDoc);

 

關於跨域加載:安全起見,現代瀏覽器不能跨域訪問,即只能加載本機上的xml文件。

 

2. 加載XML字符串

先看代碼:

 1       function LoadXmlText() {
 2 
 3             //拼接XML字符串
 4             var txt = '';
 5             txt = txt + "<note>";
 6             txt = txt + "<to>George</to>";
 7             txt = txt + "<from>John</from>";
 8             txt = txt + "<heading>Reminder</heading>";
 9             txt = txt + "<body>Don't forget the meeting!</body>";
10             txt = txt + "</note>";
11 
12             
13             if (window.DOMParser) {
14                 //非IE瀏覽器
15                 xmlDoc = (new DOMParser()).parseFromString(txt, "text/xml");
16             } else {
17                 //IE瀏覽器
18                 xmlDoc = new ActiveXObject("Microsoft.XMLDOM");         
19                 // 或者:xmlDoc = new ActiveXObject("MSXML2.DOMDocument");      
20 
21                 xmlDoc.async = "false";        //不啟用異步,保證加載文件成功之前不會進行下面操作
22                 xmlDoc.loadXML(txt);
23             }
24 
25             console.log(xmlDoc);
26         }

如果瀏覽器支持window.DOMParser對象,則直接用它的parseFromString()方法加載xml字符串。

IE瀏覽器不支持window.DOMParser,則用loadXML()加載。

代碼中注釋都寫的很親你清楚。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM