js xml封装解析

// 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");
}

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
javascript封装的通用解析和操作xml文件数据工具类(含测试使用代码) javascript封装的通用解析和操作xml文件数据工具类(含测试使用代码) 测试数据: 西游记 吴承恩 红楼梦 曹雪芹 三国演义 罗贯中 水浒传 施耐庵 //config参数:xmlPath文件地址;dataType数据格式-json或arry,默认为array。 var xmlUtils = new XmlUtils({ xmlPath:"/xmlData/book.xml", dataType:"xml" }); //获取XML内容 alert(xmlUtils.toString()); var rs = xmlUtils.getNodesTextByName(['name','author']); //把上面的dataType改为array或者不为json此处就能得到值 document.getElementById("xmlOpTest").innerHTML += '取得所有的文本节点的数组: '+rs + ''; var root = xmlUtils.getRoot(); //alert(root); xmlUtils.createNode('publish', '中国电力出版社',{id:'id0001'},root); xmlUtils.createCDATANode('publish', '中国&电力出版社',{},root); //设置属性 xmlUtils.setAttribute(root,'testId','test'); //修改属性 xmlUtils.setAttribute(root,'testId','test0000000000'); alert(xmlUtils.toString(root)); //删除第一个节点 publish xmlUtils.removeChild(xmlUtils.getNodesByXpath('//root/publish')[0]); alert(xmlUtils.toString(root)); var node = xmlUtils.getFirstChild(); //+ xmlUtils.hasAttributes(node) +''; document.getElementById("xmlOpTest").innerHTML += '判断是否有子节点: '+ xmlUtils.hasChildNodes(node) + ' ------ 判断是否有属性:'; document.getElementById('xmlOpTest').innerHTML += '得到节点的第一个节点: '+xmlUtils.getTagName(node) + "---" + xmlUtils.getText(node) +' ======== 节点类型:' + xmlUtils.getNodeType(node) + ''; node = xmlUtils.getNextNode(node); document.getElementById('xmlOpTest').innerHTML += '得到节点的第一个节点下一个节点: '+xmlUtils.getTagName(node) + "---" + xmlUtils.getText(node) +''; node = xmlUtils.getLastChild(); document.getElementById('xmlOpTest').innerHTML += '得到节点的最后一个节点: '+xmlUtils.getTagName(node) + "---" + xmlUtils.getText(node) +'';

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值