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 键盘事件的组合使用实现代码
May 04 Javascript
js判断页面中是否有指定控件的简单实例
Mar 04 Javascript
SuperSlide标签切换、焦点图多种组合插件
Mar 14 Javascript
jquery中添加属性和删除属性
Jun 03 Javascript
domReady的实现案例
Nov 23 Javascript
基于MVC方式实现三级联动(JavaScript)
Jan 23 Javascript
Bootstrap笔记—折叠实例代码
Mar 13 Javascript
基于jstree使用AJAX请求获取数据形成树
Aug 29 Javascript
vue引入新版 vue-awesome-swiper插件填坑问题
Jan 25 Javascript
VUE的history模式下除了index外其他路由404报错解决办法
Aug 21 Javascript
详解vue中在循环中使用@mouseenter 和 @mouseleave事件闪烁问题解决方法
Apr 07 Javascript
JavaScript实现简易计算器小功能
Oct 22 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 使用expat方式解析xml文件操作示例
2019/11/26 PHP
jquery 框架使用教程 AJAX篇
2009/10/11 Javascript
使用JavaScript实现Java的List功能(实例讲解)
2013/11/07 Javascript
8个实用的jQuery技巧
2014/03/04 Javascript
javascript日期计算实例分析
2015/06/29 Javascript
如何屏蔽防止别的网站嵌入框架代码
2015/08/24 Javascript
简单封装js的dom查询实例代码
2016/07/08 Javascript
深入了解JavaScript的逻辑运算符(与、或)
2016/12/20 Javascript
js 数据存储和DOM编程
2017/02/09 Javascript
js 公式编辑器 - 自定义匹配规则 - 带提示下拉框 - 动态获取光标像素坐标
2018/01/04 Javascript
利用js实现前后台传送Json的示例代码
2018/03/29 Javascript
小程序实现选择题选择效果
2018/11/04 Javascript
对layui数据表格动态cols(字段)动态变化详解
2019/10/25 Javascript
JS eval代码快速解密实例解析
2020/04/23 Javascript
nodejs处理tcp连接的核心流程
2021/02/26 NodeJs
[56:20]LGD vs VP Supermajor 败者组决赛 BO3 第三场 6.10
2018/07/04 DOTA
详细解析Python当中的数据类型和变量
2015/04/25 Python
Python编程之黑板上排列组合,你舍得解开吗
2017/10/30 Python
转换科学计数法的数值字符串为decimal类型的方法
2018/07/16 Python
对numpy中二进制格式的数据存储与读取方法详解
2018/11/01 Python
详解django+django-celery+celery的整合实战
2019/03/19 Python
Python中低维数组填充高维数组的实现
2019/12/02 Python
keras CNN卷积核可视化,热度图教程
2020/06/22 Python
python 实现关联规则算法Apriori的示例
2020/09/30 Python
html2canvas把div保存图片高清图的方法示例
2018/03/05 HTML / CSS
苹果音乐订阅:Apple Music
2018/08/02 全球购物
美国最大的户外装备和服装购物网站:Backcountry
2019/10/15 全球购物
学年自我鉴定范文
2013/10/01 职场文书
实习自我评价怎么写
2013/12/02 职场文书
体育教育毕业生自荐信
2014/06/29 职场文书
平安家庭事迹材料
2014/12/20 职场文书
2015年体育部工作总结
2015/04/02 职场文书
运动员入场词
2015/07/18 职场文书
2016十一国庆节慰问信
2015/12/01 职场文书
CSS 实现Chrome标签栏的技巧
2021/08/04 HTML / CSS
Spring Boot 实现 WebSocket
2022/04/30 Java/Android