大家直接看源代码和截图吧!
jsResolveXML.html
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>使用javascript解析xml</title>
<link rel="stylesheet" type="text/css" href="css/body.css">
<link rel="stylesheet" type="text/css" href="css/mark.css">
<link rel="stylesheet" type="text/css" href="css/console.css">
<script type="text/javascript" src="js/console.js"></script>
</head>
<body>
<div align="center">
<h2>使用javascript解析xml</h2>
</div>
</body>
<script type="text/javascript">
var xmlFileName = "citys.xml";
var xmlDoc = '';
if (window.ActiveXObject) { // IE
var activeXNameList = new Array("MSXML2.DOMDocument.6.0",
"MSXML2.DOMDocument.5.0", "MSXML2.DOMDocument.4.0",
"MSXML2.DOMDocument.3.0", "MSXML2.DOMDocument",
"Microsoft.XMLDOM", "MSXML.DOMDocument");
for (var index = 0; index < activeXNameList.length; index++) {
try {
xmlDoc = new ActiveXObject(activeXNameList[index]);
} catch (e) {
continue;
}
if (xmlDoc)
break;
}
} else if (document.implementation
&& document.implementation.createDocument) { //非 IE
xmlDoc = document.implementation.createDocument("", "", null);
} else {
alert('can not create XML DOM object, update your browser please...');
}
xmlDoc.async = false; //同步,防止后面程序处理时遇到文件还没加载完成出现的错误,故同步等XML文件加载完再做后面处理
alert("xmlDoc=" + xmlDoc + " " + xmlDoc.nodeName);
xmlDoc.load(xmlFileName); //加载XML
//JS读取 XML 文件中的 area 节点的方式如下:
var nodeList = xmlDoc.documentElement.getElementsByTagName("area"); // IE
for (var i = 0; i < nodeList.length; i++) {
//...遍历操作...
var attributeValue = nodeList[i].getAttribute("areaid");
debug("IE浏览器效果" + attributeValue);
}
var nodeList = xmlDoc.getElementsByTagName("area"); // 非IE
for (var i = 0; i < nodeList.length; i++) {
//...遍历操作...
var attributeValue = nodeList[i].getAttribute("areaid");
debug("非IE浏览器效果" + attributeValue);
}
</script>
</html>
citys.xml
<?xml version="1.0" encoding="UTF-8"?>
<visiter>
<area areaid="shenzhen">
<areaname>shenzhen</areaname>
<user userid="001">
<name>shenzhenNBA</name>
<sex>man</sex>
</user>
</area>
<area areaid="shanghai">
<areaname>shenzhen</areaname>
<user userid="002">
<name>xiaoming</name>
<sex>woman</sex>
</user>
<user userid="003">
<name>zhangsan</name>
<sex>man</sex>
</user>
</area>
</visiter>
使用火狐浏览器的效果很好,没有任何问题,如下图:
使用IE浏览器(我用的是IE11版本)的效果就是报错,如下图:报错的提示已经非常明显了!
在IE浏览器中不支持load方法,我特意在网上查了一下,IE11和IE10,IE9,IE8有非常大的差别,真是坑爹啊!其实要说浏览器这东西,火狐浏览器,谷歌浏览器都挺不错的,他们都是遵循W3C规范的,但是微软这家伙,挺无语的,老是喜欢有自己的一套标准,有些完全是与W3C的标准不同,微软喜欢作就作呗,早晚被自己作死!不作死就不会死!