作家
登录

JavaScript XML操作 封装类

作者: 来源:www.28hudong.com 2013-03-30 02:31:28 阅读 我要评论

复制代码 代码如下:function XMLObject() { this.isIE=true; if (window.ActiveXObject){isIE=true;}else{isIE=false;} var node_xml; var xmlDoc; if (isIE){ 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; //从字符串创建XML对象(XML字符串) this.LoadXMLForString=function(XMLStr) { if(isIE) { xmlDoc.loadXML(XMLStr); } else { var oParser = new DOMParser(); xmlDoc = oParser.parseFromString(XMLStr,"text/xml"); } } //从外部文件创建XML文件(文件路径) this.getXMLForURL=function(url) { //xmlDoc.load(url); if (isIE){ xmlDoc.load(url); } else { xmlDoc = getXML(url).responseXML; } } //获得节点字节点 this.getXMLArray=function (name) { 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; } //获得节点内容 this.getNodeValue=function(name) { return this.getValue(xmlDoc,name); } //根据节点获得节点下子节点内容 this.getValue=function(node, name) { 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 GetXMLHTTP() { var xmlhttp; 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; } function getXML(url){ var xmlHttp=GetXMLHTTP(); if (xmlHttp!=null){ xmlHttp.open("GET",url,false); xmlHttp.send(null); }else{ alert("Your browser does not support XMLHTTP.11"); return false; } return xmlHttp; } } 调用方法DEMO 复制代码 代码如下:var strXML="<?xml version='1.0' encoding='utf-8'?><ekuy><user><name><cnname>小猪</cnname></name><age>27</age></user><user><name><cnname>小霞</cnname></name><age>26</age></user><user><name><cnname>小章</cnname></name><age>25</age></user></ekuy>"; var XMLObj=new XMLObject(); XMLObj.LoadXMLForString(strXML) //XMLObj.getXMLForURL("test.xml"); var list = XMLObj.getXMLArray( 'user');//获得节点 document.write(XMLObj.getNodeValue('ekuy.user.name.cnname'));//直接获得节点内容 //循环节点获得节点下子节点内容 for(var i=0; i<list.length; i++) { var obj = list[i]; document.write(XMLObj.getValue(obj, 'name.cnname')); document.write(XMLObj.getValue(obj, 'age')); document.write('<br/>'); } 呵呵 写的不怎样 大家见笑 非常简单的功能

  推荐阅读

  javascript 具名函数的四种调用方式 推荐第1/3页

1、()小括号运算符 平时最常用的就是()运算符来调用一个函数 复制代码 代码如下://无参函数fun1 function fun1() { alert('我被调用了'); } fun1() //有参函数fun2 function fun2(param) { alert(param); } fun2('>>>详细阅读


本文标题:JavaScript XML操作 封装类

地址:http://www.17bianji.com/kaifa2/JS/28522.html

关键词: 探索发现

乐购科技部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与乐购科技进行文章共享合作。

网友点评
自媒体专栏

评论

热度

精彩导读
栏目ID=71的表不存在(操作类型=0)