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 相关文章推荐
js用图作提交按钮或超连接
Mar 26 Javascript
JavaScript比较两个对象是否相等的方法
Feb 06 Javascript
理解jquery事件冒泡
Jan 03 Javascript
Javascript之BOM(window对象)详解
May 25 Javascript
Vue.js中用webpack合并打包多个组件并实现按需加载
Feb 17 Javascript
jQuery插件FusionWidgets实现的AngularGauge图效果示例【附demo源码】
Mar 23 jQuery
微信小程序富文本渲染引擎的详解
Sep 30 Javascript
深入了解js原型模式
May 30 Javascript
详解如何在Vue项目中发送jsonp请求
Oct 25 Javascript
Vue实例的对象参数options的几个常用选项详解
Nov 08 Javascript
Vue如何实现变量表达式选择器
Feb 18 Vue.js
vue实现同时设置多个倒计时
May 20 Vue.js
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的一个登录的类 [推荐]
2007/03/16 PHP
php截取utf-8中文字符串乱码的解决方法
2010/03/29 PHP
php trim 去除空字符的定义与语法介绍
2010/05/31 PHP
PHP正则表达式过滤html标签属性(DEMO)
2016/05/04 PHP
php文件管理基本功能简单操作
2017/01/16 PHP
微信企业转账之入口类分装php代码
2018/10/01 PHP
PHP小程序支付功能完整版【基于thinkPHP】
2019/03/26 PHP
php+lottery.js实现九宫格抽奖功能
2019/07/21 PHP
Jquery 弹出层插件实现代码
2009/10/24 Javascript
js获取GridView中行数据的两种方法 分享
2013/07/13 Javascript
js函数内变量的作用域分析
2015/01/12 Javascript
jQuery简单操作cookie的插件实例
2016/01/13 Javascript
jQuery设置和获取select、checkbox、radio的选中值方法
2017/01/01 Javascript
AngularJS自定义指令实现面包屑功能完整实例
2017/05/17 Javascript
cocos creator Touch事件应用(触控选择多个子节点的实例)
2017/09/10 Javascript
Vuex的API文档说明详解
2020/02/05 Javascript
Vue基于iview table展示图片实现点击放大
2020/08/05 Javascript
请求时token过期自动刷新token操作
2020/09/11 Javascript
[01:28:56]2014 DOTA2华西杯精英邀请赛 5 24 CIS VS DK
2014/05/26 DOTA
go和python调用其它程序并得到程序输出
2014/02/10 Python
Python随手笔记之标准类型内建函数
2015/12/02 Python
Python cookbook(数据结构与算法)将序列分解为单独变量的方法
2018/02/13 Python
python实现视频分帧效果
2019/05/31 Python
Python paramiko模块使用解析(实现ssh)
2019/08/30 Python
python访问hdfs的操作
2020/06/06 Python
Django如何实现防止XSS攻击
2020/10/13 Python
用Python实现童年贪吃蛇小游戏功能的实例代码
2020/12/07 Python
Farfetch台湾官网:奢侈品牌时尚购物平台
2019/06/17 全球购物
大二法英学生职业生涯规划范文
2014/02/27 职场文书
设计专业自荐信
2014/06/19 职场文书
员工工作自我评价
2014/09/26 职场文书
初二学生评语大全
2014/12/26 职场文书
订货会邀请函
2015/01/31 职场文书
个人总结与自我评价
2015/02/14 职场文书
合作合同协议书
2016/03/21 职场文书
Ajax实现局部刷新的方法实例
2021/03/31 Javascript