IE与Firefox中访问XML文档

首先,为什么要区分两个浏览器,其实不能说是两个,而是两种,一种是IE类的,一种是Firefox类的,这里,我借用我的同学小鹏的回答:在每个浏览器里面实现这个功能的方式不一样,所以要区分,而区分的方式就是用每一个浏览器的特征来区分,像if(window.activeXObject)就是用来判断是不是IE 。

接下来,知道浏览器的区别后,要搞清楚,一下几个问题:

1.访问或者是操作XML文档,首先要创建DomDocument对象。

2.然后将XML文档或者是字符串装载到这个对象。

3.最后,用这个对象所带有的方法来实现相应的操作。

4.再提一下区分浏览器的问题

相信只要装载好了,那些函数的调用就相对简单些了,所以,对于初学的来说,理解和装载是很难得一步。坚持!

下面,我将把以上三个步骤放过来,以加深印象。所有的注释我已经写的很清楚了。

第一个,loadxmlwenjian.js

// JavaScript Document
/*
封装ie和firefox类浏览器中装载同域xml文件或xml字符串的方法,返回的是xml文档对应的DOM对象中的根元素节点
*/
function loadxml(xmldoc){
 if (window.ActiveXObject){
  //IE浏览器
  var activeNames=['MSXML2.DOMDocumnet.5.0', 'MSXML2.DOMDocumnet.4.0',   
               'MSXML2.DOMDocumnet.3.0','Microsoft.XmlDom'];  
//在ie下可以创建装载xml文档的空间名称
  var xmlobject;//创建出来的能够装载xml的对象
  
  
  for (var i=0;i<activeNames.length;i++){
  try {
   
   xmlobject=new ActiveXObject(activeNames[i]);
  
   break;
 }
 catch (e){}
  }
 if(xmlobject){
   
  //如果创建成功,则利用这个对象进行xml文件或xml文档的装载
  //装载文件和字符串,ie又有不同的方法进行对应,下面进行判断
  xmlobject.async=false;//一般使用同步方式
  
  //装载xml的文件
  xmlobject.load(xmldoc);
  
  
   return xmlobject.xml;
   //return xmlobject.documentElement;//返回根元素节点
  }
  else{
   alert("装载文件的对象创建失败");
   return null;
   }
 }
  
else if (document.implementation.createDocument){
  //针对firefox类浏览器,也是两种不同的方式装载
  var xmlobject;
  
  //装载xml文件,需要先创建一个空的DOM对象,然后装载xml内容
      xmlobject=document.implementation.createDocument("","",null);//创建空的Dom对象
       if (xmlobject){
       xmlobject.async=false;//同步方式装载
        xmlobject.load(xmldoc);
     var ser=new XMLSerializer(); //序列化方式也与ie浏览器不同
     var xml=ser.serializeToString(xmlobject);
         return xml;
               }
              else{
                alert ("装载xml文档的对象创建失败");
               return null;
                 }
  
   
  }
}

第二个,loadxml.html

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>无标题文档</title>
</head>
<script type="text/javascript" src="loadxmlwenjian.js"></script>
<script type="text/javascript">
function test(){
 var domxml1=loadxml("test.xml");
alert(domxml1);
 
}
</script>
<body>
<input type="button" value="test"  onClick="test()"/>
</body>
</html>
第三个,test.xml文档:

<?xml version="1.0" encoding="gb2312"?>
<root><nihao>nihao456</nihao>
       <dajiahao>tiana</dajiahao>
  
    </root>

还是要提一下小鹏给的意见:应该保证每个函数一个出口一个入口,所以,应该将整个js文件分为几部分,否则,里面的很多return会把人搞晕的。嘻嘻~继续加油!

最后是一个问题:就是最上面的那个数组内容,那些内容和以前创建XMLHttpRequest对象时候的数组内容不一样,还有哪些其他的呀?到底是什么意思?

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值