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 最近浏览过的商品的功能实现代码
May 14 Javascript
JQuery index()方法使用代码
Jun 02 Javascript
javascript之bind使用介绍
Oct 09 Javascript
Jquery判断$(&quot;#id&quot;)获取的对象是否存在的方法
Sep 25 Javascript
JavaScript sup方法入门实例(把字符串显示为上标)
Oct 20 Javascript
JQuery导航菜单选择特效
Apr 11 Javascript
Bootstrap源码解读排版(1)
Dec 23 Javascript
JS实现标签页切换效果
May 04 Javascript
webpack打包node.js后端项目的方法
Mar 10 Javascript
小程序input数据双向绑定实现方法
Oct 17 Javascript
npm全局环境变量配置详解
Dec 15 Javascript
详解JVM系列之内存模型
Jun 10 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桌面中心(二) 数据库写入
2007/03/11 PHP
PHP实现的MongoDB数据库操作类分享
2014/05/12 PHP
Linux系统下使用XHProf和XHGui分析PHP运行性能
2015/12/08 PHP
jQuery实现Flash效果上下翻动的中英文导航菜单代码
2015/09/22 Javascript
AngularJS中的DOM操作用法分析
2016/11/04 Javascript
Bootstrap 轮播(Carousel)插件
2016/12/26 Javascript
jQuery html表格排序插件tablesorter使用方法详解
2017/02/10 Javascript
canvas雪花效果核心代码分享
2017/02/19 Javascript
JavaScript数据类型的存储方法详解
2017/08/25 Javascript
layer弹出的iframe层在执行完毕后关闭当前弹出层的方法
2018/08/17 Javascript
一文快速了解JQuery中的AJAX
2019/05/31 jQuery
js实现图片上传即时显示效果
2019/09/30 Javascript
微信小程序返回箭头跳转到指定页面实例解析
2019/10/08 Javascript
基于vue的tab-list类目切换商品列表组件的示例代码
2020/02/14 Javascript
vue的hash值原理也是table切换实例代码
2020/12/14 Vue.js
python ip正则式
2009/05/07 Python
编写Python脚本来获取mp3文件tag信息的教程
2015/05/04 Python
使用Django启动命令行及执行脚本的方法
2018/05/29 Python
Python numpy.array()生成相同元素数组的示例
2018/11/12 Python
python3.6+django2.0+mysql搭建网站过程详解
2019/07/24 Python
Python中模块(Module)和包(Package)的区别详解
2019/08/07 Python
Python 文件操作之读取文件(read),文件指针与写入文件(write),文件打开方式示例
2019/09/29 Python
浅谈keras的深度模型训练过程及结果记录方式
2020/01/24 Python
解决Django中checkbox复选框的传值问题
2020/03/31 Python
基于python实现MQTT发布订阅过程原理解析
2020/07/27 Python
Python创建临时文件和文件夹
2020/08/05 Python
美国机场停车位预订:About Airport Parking
2018/03/26 全球购物
阿迪达斯越南官网:adidas越南
2020/07/19 全球购物
大学本科毕业生的自我鉴定范文
2013/11/19 职场文书
财务会计实习报告体会
2013/12/20 职场文书
省级四好少年事迹材料
2014/01/25 职场文书
化妆品店促销方案
2014/02/24 职场文书
《美丽的丹顶鹤》教学反思
2014/04/22 职场文书
大学生社会实践评语
2014/04/25 职场文书
中秋节国旗下演讲稿
2014/09/05 职场文书
二十年同学聚会感言
2015/07/30 职场文书