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()加載。

代碼中註釋都寫的很清楚。


轉自:http://www.cnblogs.com/wangfupeng1988/p/3709924.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章