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()載入。
程式碼中註釋都寫的很親你清楚。