javaScript解析XML时IE11浏览器不支持xmlDoc.load()方法(案例讲解)

大家直接看源代码和截图吧!

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的标准不同,微软喜欢作就作呗,早晚被自己作死!不作死就不会死!

  • 0
    点赞
  • 6
    评论
  • 1
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值