js xml封装解析

来源:互联网 发布:用友软件培训中心 编辑:程序博客网 时间:2024/06/02 04:21

// JScript 文件

//检查浏鉴器类型。。。

function IEOrFire()
{
   this.isIE=true;      
   if (window.ActiveXObject)
   {
      isIE=true;
   }
   else
   {
      isIE=false;
   }
  
   return isIE;
}

//创建xml对象

function CreateXmlDoc()
{
      var xmlDoc=null;
      
      if (IEOrFire())
      {
         xmlDoc = new ActiveXObject("Msxml2.DOMDocument");
      }
      else
      {
          if (document.implementation && document.implementation.createDocument)
          {
              xmlDoc = document.implementation.createDocument("","",null);
          }
      }
      xmlDoc.async = false;
      xmlDoc.resolveExternals = false;
      xmlDoc.validateOnParse = false;
      xmlDoc.preserveWhiteSpace = true;
      
      return xmlDoc;
}
 //从字符串创建XML对象(XML字符串)
function LoadXMLForString(xmlStr)
{
    var xmlDoc=CreateXmlDoc();
   
    if(IEOrFire())
    {
        xmlDoc.loadXML(xmlStr);
    }
    else
    {
        var oParser = new DOMParser();
        xmlDoc = oParser.parseFromString(xmlStr,"text/xml");
    }   
    return xmlDoc
}
////从外部文件创建XML文件(文件路径)
function getXMLForURL(url)
{
    var xmlDoc=CreateXmlDoc();
    if (IEOrFire())
    {
        xmlDoc.load(url);
    }
    else
    {
        xmlDoc = getXML(url).responseXML;
    }
    return xmlDoc
}
 //获得节点字节点
 
 //getXMLArray("BlogPass.",生成xml字符串);
 
function getXMLArray(name,xmlStr)
{       
         var node_xml=null;
         var xmlDoc=LoadXMLForString(xmlStr);
         var keys = name.split('.');
         var node = xmlDoc.documentElement; // 得到根节点
         var rtn = new Array();
         var n = 0;
         for(var i=0; i<keys.length; i++)
         {
            var childs = node.childNodes; // 得到子节点
            var key = keys[i];
            for(var k=0; k<childs.length; k++)
            {
                var child = childs[k];
                if(child.nodeName == key)
                {
                  // 判断子节点是否符合
                   if(i == keys.length-1)
                   {
                      rtn[n] = child;
                      n++;
                   }
                   else
                   {
                      node = child;
                      break;
                   }
                }
            }
         }
         node_xml=rtn;
         return rtn;
}
//创建ajax技术
 function CreateXMLHTTP2()
 {
     var xmlhttp=null;
     if (window.ActiveXObject)
     {
       try
       {
          xmlhttp=new ActiveXObject("Msxml2.XMLHTTP");
       }
       catch (e)
       {
          xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
       }
     }
     else if (window.XMLHttpRequest)
     {
         xmlhttp=new XMLHttpRequest();
     }
     return xmlhttp;
 }
//通过ajax技术获取xml数据
function getXML(url)
{
   var xmlHttp=CreateXMLHTTP2();
   if (xmlHttp!=null)
   {
       xmlHttp.open("GET",url,false);
       xmlHttp.send(null);
   }
   else
   {
       alert("Your browser does not support XMLHTTP.11");
       return false;
   }
   return xmlHttp;
}
//生成xmlDoc对象,有内容的而不是空的

function getDocumentRoot(xmlstr)
{
   var xmlDoc=LoadXMLForString(xmlstr);
  
   return xmlDoc.documentElement;//得到根节点
}
//获得节点内容
//getNodeValue(xmlDoc,"BlogPass.");

function getNodeValue(xmlDoc,name)
{
    return this.getValue(xmlDoc,name);
}
//根据节点获得节点下子节点内容
function getValue(xmLDoc, name)
{
         var node = xmLDoc.documentElement; // 得到根节点
        
         var keys = name.split('.');
         
         for(var i=0; i<keys.length; i++)
         {
            var childs = node.childNodes; // 得到子节点
            var key = keys[i];
            for(var k=0; k<childs.length; k++)
            {
               var child = childs[k];
               if(child.nodeName == key)
               {
                  // 判断子节点是否符合
                  if(child.childNodes.length == 1)
                  {
                   // 如果没有字节点,返回值
                     if(!window.ActiveXObject)
                     {
                        return childs[k].textContent;
                     }
                     else
                     {
                        return childs[k].text
                     }
                  }
                  else
                  {
                     // 还有子节点,继续分析
                     node = child;
                     break;
                  }
               }
           }
        }
        return "";
}

 

调用方式如下:

function XMLNode(strXML)
{
    var strXML="<?xml version=/"1.0/" encoding=/"utf-8/" ?><xmlList><BlogPass>map</BlogPass><Result>ok</Result></xmlList>";
   
    var xmlDoc=LoadXMLForString(strXML);
   
    var pass=getNodeValue(xmlDoc,"BlogPass.");
   
    var result=getNodeValue(xmlDoc,"Result");
}

 

 

原创粉丝点击