JS在IE和Firefox下如何解析XML

来源:互联网 发布:多益网络招聘要求 编辑:程序博客网 时间:2024/05/16 06:52

我的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;
}

 

//自己留着以备后用

原创粉丝点击