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显示随机图像或引用
Apr 21 Javascript
js下通过prototype扩展实现indexOf的代码
Dec 08 Javascript
JS控制弹出新页面窗口位置和大小的方法
Mar 02 Javascript
javascript实现淡蓝色的鼠标拖动选择框实例
May 09 Javascript
jQuery实现的AJAX简单弹出层效果代码
Nov 26 Javascript
JS操作XML实例总结(加载与解析XML文件、字符串)
Dec 08 Javascript
[原创]javascript typeof id==='string'?document.getElementById(id):id解释
Nov 02 Javascript
jQuery插件jsonview展示json数据
May 26 jQuery
详解Vue.js v-for不支持IE9的解决方法
Dec 29 Javascript
layui 图片上传+表单提交+ Spring MVC的实例
Sep 21 Javascript
vue中英文切换实例代码
Jan 21 Javascript
js在HTML的三种引用方式详解
Aug 29 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
vBulletin HACK----关于排版的两个HACK
2006/10/09 PHP
介绍几个array库的新函数 php
2006/12/29 PHP
Javascript 键盘事件的组合使用实现代码
2012/05/04 Javascript
获取div编辑框,textarea,input text的光标位置 兼容IE,FF和Chrome的方法介绍
2012/11/08 Javascript
Blocksit插件实现瀑布流数据无限( 异步)加载
2014/06/20 Javascript
jQuery实现的无限级下拉菜单功能示例
2016/09/12 Javascript
bootstrap导航、选项卡实现代码
2016/12/28 Javascript
swiper插件自定义切换箭头按钮
2017/12/28 Javascript
微信小程序slider组件使用详解
2018/01/31 Javascript
小程序测试后台服务的方法(ngrok)
2019/03/08 Javascript
JavaScript实现公告栏上下滚动效果
2020/03/13 Javascript
《javascript设计模式》学习笔记五:Javascript面向对象程序设计工厂模式实例分析
2020/04/08 Javascript
[05:41]2014DOTA2西雅图国际邀请赛 小组赛7月10日TOPPLAY
2014/07/10 DOTA
python 文件和路径操作函数小结
2009/11/23 Python
Python连接MySQL并使用fetchall()方法过滤特殊字符
2016/03/13 Python
关于Python中Inf与Nan的判断问题详解
2017/02/08 Python
带你了解python装饰器
2017/06/15 Python
python回调函数中使用多线程的方法
2017/12/25 Python
启动Atom并运行python文件的步骤
2018/11/09 Python
使用python对文件中的数值进行累加的实例
2018/11/28 Python
windows下 兼容Python2和Python3的解决方法
2018/12/05 Python
django之自定义软删除Model的方法
2019/08/14 Python
Pytorch高阶OP操作where,gather原理
2020/04/30 Python
新西兰杂志订阅:isubscribe
2019/08/26 全球购物
回门宴父母答谢词
2014/01/26 职场文书
企业业务员岗位职责
2014/03/14 职场文书
小学二年级学生评语
2014/04/21 职场文书
大学生社团活动总结
2014/04/26 职场文书
幼儿园校车安全责任书
2015/05/08 职场文书
学术会议开幕词
2016/03/03 职场文书
Python趣味挑战之教你用pygame画进度条
2021/05/31 Python
Mybatis-plus在项目中的简单应用
2021/07/01 Java/Android
Java数据开发辅助工具Docker与普通程序使用方法
2021/09/15 Java/Android
总结高并发下Nginx性能如何优化
2021/11/01 Servers
“鬼灭之刃”热度不减,其成功背后的原因是什么?
2022/03/22 日漫
python中filter,map,reduce的作用
2022/06/10 Python