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 相关文章推荐
jquery插件制作 自增长输入框实现代码
Aug 17 jQuery
JS 屏蔽键盘不可用与鼠标右键不可用的方法
Nov 18 Javascript
JavaScript立即执行函数的三种不同写法
Sep 05 Javascript
使用Chrome调试JavaScript的断点设置和调试技巧
Dec 16 Javascript
解决bootstrap中modal遇到Esc键无法关闭页面
Mar 09 Javascript
浅析jsopn跨域请求原理及cors(跨域资源共享)的完美解决方法
Feb 06 Javascript
vue实现todolist单页面应用
Apr 11 Javascript
Vue 父子组件的数据传递、修改和更新方法
Mar 01 Javascript
Vue脚手架的简单使用实例
Jul 10 Javascript
自己动手封装一个React Native多级联动
Sep 19 Javascript
微信小程序学习笔记之本地数据缓存功能详解
Mar 29 Javascript
vue router 跳转时打开新页面的示例方法
Jul 28 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
用dom+xhtml+css制作的一个相册效果代码打包下载
2008/01/24 Javascript
两种简单实现菜单高亮显示的JS类代码
2010/06/27 Javascript
jQuery ajax cache缓存问题
2010/07/01 Javascript
jQuery中unwrap()方法用法实例
2015/01/16 Javascript
实例讲解避免javascript冲突的方法
2016/01/03 Javascript
jQuery页面刷新(局部、全部)问题分析
2016/01/09 Javascript
jQuery Easyui 下拉树组件combotree
2016/12/16 Javascript
解决JQuery全选/反选第二次失效的问题
2017/10/11 jQuery
NodeJs实现定时任务的示例代码
2017/12/05 NodeJs
JS+HTML实现的圆形可点击区域示例【3种方法】
2018/08/01 Javascript
koa源码中promise的解读
2018/11/13 Javascript
layui-select动态选中值的例子
2019/09/23 Javascript
Vue 使用typescript如何优雅的调用swagger API
2020/09/01 Javascript
Python多进程通信Queue、Pipe、Value、Array实例
2014/11/21 Python
python避免死锁方法实例分析
2015/06/04 Python
Python随机生成数据后插入到PostgreSQL
2016/07/28 Python
Django中STATIC_ROOT和STATIC_URL及STATICFILES_DIRS浅析
2018/05/08 Python
python 3调用百度OCR API实现剪贴板文字识别
2018/09/04 Python
python 获得任意路径下的文件及其根目录的方法
2019/02/16 Python
python实现在一个画布上画多个子图
2020/01/19 Python
Python3爬虫里关于代理的设置总结
2020/07/30 Python
python3从网络摄像机解析mjpeg http流的示例
2020/11/13 Python
css3边框_动力节点Java学院整理
2017/07/11 HTML / CSS
W3C公布最新的HTML5标准草案
2008/10/17 HTML / CSS
html svg生成环形进度条的实现方法
2019/09/23 HTML / CSS
Baracuta官方网站:Harrington夹克,G9,G4,G10等
2018/03/06 全球购物
自我评价范文分享
2014/01/04 职场文书
人力资源作业细则
2014/03/03 职场文书
利群广告词
2014/03/20 职场文书
小学教师评语大全
2014/04/23 职场文书
工商管理自荐书
2014/07/06 职场文书
倡议书范文大全
2015/04/28 职场文书
上班旷工检讨书
2015/08/15 职场文书
企业团队精神心得体会
2016/01/19 职场文书
vue选项卡切换的实现案例
2022/04/11 Vue.js
MySQL表字段数量限制及行大小限制详情
2022/07/23 MySQL