JS在IE和Firefox下如何解析XML

我的XML的数据是通过geoserver查询返回的,在IE下面和Firefox下面JS解析XMl的方式是不同的,网上的资料不少,但是好多都介绍的不是很详细,下面是我在项目中用到的:(直接贴代码了@)

function get_xml_node(xml,xmlFile)//xml是一个XML的对象,xmlfile是一个xml的字符串
{
 
 var node=new Array();
 
 //IE下解析XML对象
 if(window.ActiveXObject)
 {
  var xmlDoc;
  xmlDoc = new ActiveXObject('Microsoft.XMLDOM');
  xmlDoc.async = false;
  xmlDoc.load(xml);
  if(xmlDoc!=null)
  {
      if(xmlDoc.documentElement.childNodes.length>1)
      {
    for(var l=0;l<xmlDoc.documentElement.childNodes(1).childNodes[0].childNodes.length;l++){
        var nodestr= xmlDoc.documentElement.childNodes(1).childNodes[0].childNodes[l].nodeName;//网上很多都是通过tagname来获取nodevalue的,我的xml是变化的
        if(nodestr!=null)
        {
         var nodename=nodestr.substring(5);//根据结果进行截取所需字符串
         node.push(nodename);
        }
       }
      }
      else
      {
       alert("所选区域没有该类型的物体!");
      }
  }
 }
 //Firefox或其他浏览器解析xml的string字符串
 else if (document.implementation && document.implementation.createDocument)
 {
  var fxmlDoc;
  fxmlDoc = document.implementation.createDocument('', '', null);//创建一个空的其他浏览器厂商的xmlDoc对象(FF,Opera)
  fxmlDoc.async = false;
  
  //Firefox下没有load方法,所以加载XML方法是:将string用DOM方法实现
  domParser = new   DOMParser();
  fxmlDoc = domParser.parseFromString(xmlFile, 'text/xml');
  if(fxmlDoc!=null)
  {
   if(fxmlDoc.documentElement.childNodes.length>1)
   {
    if(fxmlDoc.documentElement.childNodes[1].hasChildNodes())
       {
        for(var l=0;l<fxmlDoc.documentElement.childNodes[1].childNodes[0].childNodes.length;l++){
         var nodestr= fxmlDoc.documentElement.childNodes[1].childNodes[0].childNodes[l].nodeName;//获取XML下一个完整节点,即:图层属性字段
         if(nodestr!=null)
         {
          var nodename=nodestr.substring(5);//根据结果进行截取所需字符串
          node.push(nodename);
         }
        }
       }
   }
   else
   {
    alert("所选区域没有该类型的物体!");
   }
  }

 }
 else
 {
     return null;
 }
  
   return  node;
}

 

//自己留着以备后用

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值