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()加载。
代码中注释都写的很亲你清楚。