JavaScript XML操作 封装类


Posted in Javascript onJuly 01, 2009
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 相关文章推荐
[原创]用javascript实现检测指定目录是否存在的方法
Jan 12 Javascript
jquery 多行文本框(textarea)高度变化
Jul 03 Javascript
javascript 弹出的窗口返回值给父窗口具体实现
Nov 23 Javascript
jQuery结合CSS制作漂亮的select下拉菜单
May 03 Javascript
AngularJS 中的事件详解
Jul 28 Javascript
ionic2 tabs 图标自定义实例
Mar 08 Javascript
JS 组件系列之BootstrapTable的treegrid功能
Jun 16 Javascript
深入理解ES6学习笔记之块级作用域绑定
Aug 19 Javascript
Node.js中Bootstrap-table的两种分页的实现方法
Sep 18 Javascript
js实现图片局部放大效果详解
Mar 18 Javascript
详解vue beforeRouteEnter 异步获取数据给实例问题
Aug 09 Javascript
JS的深浅复制详细
Oct 16 Javascript
js 跨域和ajax 跨域问题小结
Jul 01 #Javascript
javawscript 三级菜单的实现原理
Jul 01 #Javascript
Javascript 函数对象的多重身份
Jun 28 #Javascript
Javascript 阻止javascript事件冒泡,获取控件ID值
Jun 27 #Javascript
event对象的方法 兼容多浏览器
Jun 27 #Javascript
js AspxButton的客户端操作
Jun 26 #Javascript
javascript 变量作用域 代码分析
Jun 26 #Javascript
You might like
PHP 正则表达式常用函数
2014/08/17 PHP
PHP return语句另类用法不止是在函数中
2014/09/17 PHP
php实现的css文件背景图片下载器代码
2014/11/11 PHP
PHP7 echo和print语句实例用法
2019/02/15 PHP
js实现单一html页面两套css切换代码
2013/04/11 Javascript
jquery滚动组件(vticker.js)实现页面动态数据的滚动效果
2013/07/03 Javascript
js获取视频时长代码
2014/04/10 Javascript
JQuery中serialize() 序列化
2015/03/13 Javascript
jquery实现实时改变网页字体大小、字体背景色和颜色的方法
2015/08/05 Javascript
浅谈JavaScript超时调用和间歇调用
2015/08/30 Javascript
理解Javascript文件动态加载
2016/01/29 Javascript
Javascript实现的SHA-256加密算法完整实例
2016/02/02 Javascript
jQuery Validate 数组 全部验证问题
2017/01/12 Javascript
深入学习js函数的隐式参数 arguments 和 this
2019/06/24 Javascript
原生js拖拽实现图形伸缩效果
2020/02/10 Javascript
vue created钩子函数与mounted钩子函数的用法区别
2020/11/05 Javascript
深入理解javascript中的this
2021/02/08 Javascript
python 生成图形验证码的方法示例
2018/11/11 Python
Python中实现单例模式的n种方式和原理
2018/11/14 Python
详解利用python+opencv识别图片中的圆形(霍夫变换)
2019/07/01 Python
python3.7 sys模块的具体使用
2019/07/22 Python
python3实现带多张图片、附件的邮件发送
2019/08/10 Python
Django Admin中增加导出Excel功能过程解析
2019/09/04 Python
virtualenv介绍及简明教程
2020/06/23 Python
python中slice参数过长的处理方法及实例
2020/12/15 Python
HTML5之HTML元素扩展(下)—增强的Form表单元素值得关注
2013/01/31 HTML / CSS
html5实现canvas阴影效果示例
2014/05/07 HTML / CSS
女装和独特珠宝:Sundance Catalog
2018/09/19 全球购物
出口公司经理求职简历中的自我评价
2013/10/13 职场文书
网络工程专业毕业生推荐信
2013/10/28 职场文书
财务会计毕业生个人求职信
2014/02/03 职场文书
教师节演讲稿
2014/05/06 职场文书
2015年世界环境日演讲稿
2015/03/18 职场文书
父亲节感言
2015/08/03 职场文书
大学新生入学感想
2015/08/07 职场文书
八年级数学教学反思
2016/02/17 职场文书