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 ajax提交表单数据的两种方式
Nov 24 Javascript
Extjs grid添加一个图片状态或者按钮的方法
Apr 03 Javascript
Javascript无参数和有参数类继承问题解决方法
Mar 02 Javascript
浅谈javascript中的闭包
May 13 Javascript
探究Javascript模板引擎mustache.js使用方法
Jan 26 Javascript
JavaScript检查子字符串是否在字符串中的方法
Feb 03 Javascript
javascript基础语法——全面理解变量和标识符
Jun 02 Javascript
浅谈Javascript数据属性与访问器属性
Jul 26 Javascript
jQuery使用正则表达式替换dom元素标签用法示例
Jan 16 Javascript
vue中利用iscroll.js解决pc端滚动问题
Feb 15 Javascript
Vue-cli3多页面配置详解
Mar 22 Javascript
在VUE中使用lodash的debounce和throttle操作
Nov 09 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
Protoss兵种介绍
2020/03/14 星际争霸
PHP中的正规表达式(一)
2006/10/09 PHP
php 无限分类的树类代码
2009/12/03 PHP
php在多维数组中根据键名快速查询其父键以及父键值的代码
2011/05/07 PHP
smarty模板引擎中自定义函数的方法
2015/01/22 PHP
php计算税后工资的方法
2015/07/28 PHP
PHP使用自定义方法实现数组合并示例
2016/07/07 PHP
PHP有序表查找之插值查找算法示例
2018/02/10 PHP
初学JavaScript_03(ExtJs Grid的简单使用)
2008/10/02 Javascript
javascript中onclick(this)用法介绍
2013/04/19 Javascript
jQuery教程 $()包装函数来实现数组元素分页效果
2013/08/13 Javascript
JS案例分享之金额小写转大写
2014/05/15 Javascript
深入理解JavaScript系列(34):设计模式之命令模式详解
2015/03/03 Javascript
JS实现下拉菜单赋值到文本框的方法
2015/08/18 Javascript
jquery获取img的src值的简单实例
2016/05/17 Javascript
详解JavaScript原生封装ajax请求和Jquery中的ajax请求
2019/02/14 jQuery
记一次用vue做的活动页的方法步骤
2019/04/11 Javascript
解决layer弹出层的内容页点击按钮跳转到新的页面问题
2019/09/14 Javascript
python实现计算倒数的方法
2015/07/11 Python
黑科技 Python脚本帮你找出微信上删除你好友的人
2016/01/07 Python
python 编程之twisted详解及简单实例
2017/01/28 Python
python遍历序列enumerate函数浅析
2017/10/17 Python
Python基于matplotlib实现绘制三维图形功能示例
2018/01/18 Python
解决Python设置函数调用超时,进程卡住的问题
2019/08/08 Python
Python matplotlib画图时图例说明(legend)放到图像外侧详解
2020/05/16 Python
Python如何把十进制数转换成ip地址
2020/05/25 Python
pytorch 查看cuda 版本方式
2020/06/23 Python
python 高阶函数简单介绍
2021/02/19 Python
党员个人思想汇报
2013/12/28 职场文书
新年联欢会主持词
2014/03/27 职场文书
财务管理专业求职信
2014/06/11 职场文书
求职简历自荐信
2014/06/18 职场文书
教师个人读书活动总结
2014/07/08 职场文书
2014个人年度工作总结
2014/12/15 职场文书
纪录片信仰观后感
2015/06/08 职场文书
导游词之襄阳古城
2019/09/27 职场文书