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()加載。
代碼中註釋都寫的很清楚。