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实现切换字体大小的方法
Mar 10 Javascript
Vue 过渡(动画)transition组件案例详解
Jan 22 Javascript
原生JS中slice()方法和splice()区别
Mar 06 Javascript
JS实现简单抖动效果
Jun 01 Javascript
简单实现js放大镜效果
Jul 24 Javascript
JS中‘hello’与new String(‘hello’)引出的问题详解
Aug 14 Javascript
vue服务端渲染缓存应用详解
Sep 12 Javascript
JavaScript数据结构与算法之二叉树遍历算法详解【先序、中序、后序】
Feb 21 Javascript
小程序云开发教程如何使用云函数实现点赞功能
May 18 Javascript
JavaScript find()方法及返回数据实例
Apr 30 Javascript
JavaScript实现下拉列表
Jan 20 Javascript
js 数组 fill() 填充方法
Nov 02 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
模仿OSO的论坛(五)
2006/10/09 PHP
php生成随机密码的三种方法小结
2010/09/04 PHP
php解析html类库simple_html_dom(详细介绍)
2013/07/05 PHP
PHP数组遍历的几种常见方式总结
2019/02/15 PHP
使用jQuery实现dropdownlist的联动效果(sharepoint 2007)
2011/03/30 Javascript
jquery中dom操作和事件的实例学习-表单验证
2011/11/30 Javascript
jquery插件实现鼠标经过图片右侧显示大图的效果(类似淘宝)
2013/02/04 Javascript
Asp.Net alert弹出提示信息的几种方法总结
2014/01/29 Javascript
基于jquery实现的可编辑下拉框实现代码
2014/08/02 Javascript
jquery事件preventDefault()方法用法实例
2015/01/16 Javascript
JavaScript对表格或元素按文本,数字或日期排序的方法
2015/05/26 Javascript
JavaScript实现简洁的俄罗斯方块完整实例
2016/03/01 Javascript
Bootstrap模态框禁用空白处点击关闭
2016/10/20 Javascript
Angular2学习笔记——详解NgModule模块
2016/12/02 Javascript
实例讲解DataTables固定表格宽度(设置横向滚动条)
2017/07/11 Javascript
关于定制FileField中的上传文件名称问题
2017/08/22 Javascript
基于Cookie常用操作以及属性介绍
2017/09/07 Javascript
Vue中之nextTick函数源码分析详解
2017/10/17 Javascript
基于Vue的移动端图片裁剪组件功能
2017/11/28 Javascript
JavaScript适配器模式原理与用法实例详解
2020/03/09 Javascript
js实现3D粒子酷炫动态旋转特效
2020/09/13 Javascript
[01:08:30]DOTA2-DPC中国联赛 正赛 Ehome vs Elephant BO3 第一场 2月28日
2021/03/11 DOTA
Python中一些自然语言工具的使用的入门教程
2015/04/13 Python
python使用tensorflow深度学习识别验证码
2018/04/03 Python
python双向链表原理与实现方法详解
2019/12/03 Python
python文件绝对路径写法介绍(windows)
2019/12/25 Python
浅谈Python的方法解析顺序(MRO)
2020/03/05 Python
Django生成数据库及添加用户报错解决方案
2020/10/09 Python
教师实习自我鉴定
2013/12/14 职场文书
初中校园广播稿
2014/02/02 职场文书
幼儿园秋游感想
2014/03/12 职场文书
导师工作推荐信范文
2014/05/17 职场文书
党旗在我心中演讲稿
2014/09/15 职场文书
乡镇党员干部群众路线对照检查材料思想汇报
2014/09/28 职场文书
离婚代理词范文
2015/05/23 职场文书
Python 制作自动化翻译工具
2021/04/25 Python