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 相关文章推荐
input按钮的事件处理大全
Dec 10 Javascript
js模仿jquery的写法示例代码
Jun 16 Javascript
12种不宜使用的Javascript语法整理
Nov 04 Javascript
JavaScript实现16进制颜色值转RGB的方法
Feb 09 Javascript
JavaScript入门教程之引用类型
May 04 Javascript
jQuery 判断元素整理汇总
Feb 28 Javascript
Angular 4依赖注入学习教程之ClassProvider的使用(三)
Jun 04 Javascript
浅谈用Webpack路径压缩图片上传尺寸获取的问题
Feb 22 Javascript
elementUI select组件默认选中效果实现的方法
Mar 25 Javascript
Vue 自定义标签的src属性不能使用相对路径的解决
Sep 17 Javascript
vue 获取元素额外生成的data-v-xxx操作
Sep 09 Javascript
vue3中provide && inject的使用
Jul 01 Vue.js
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 缓冲的免费实现方法
2006/10/09 PHP
基于CakePHP实现的简单博客系统实例
2015/06/28 PHP
PHP内核探索:哈希表碰撞攻击原理
2015/07/31 PHP
PHP截取IE浏览器并缩小原图的方法
2016/03/04 PHP
php处理复杂xml数据示例
2016/07/11 PHP
Javascript优化技巧(文件瘦身篇)
2008/01/28 Javascript
JavaScript常用全局属性与方法记录积累
2013/07/03 Javascript
javascript 得到文件后缀名的思路及实现
2020/05/09 Javascript
JavaScript数据结构和算法之图和图算法
2015/02/11 Javascript
javascript记住用户名和登录密码(两种方式)
2015/08/04 Javascript
js表单元素checked、radio被选中的几种方法(详解)
2016/08/22 Javascript
thinkjs微信中控之微信鉴权登陆的实现代码
2019/08/08 Javascript
Vue中component标签解决项目组件化操作
2020/09/04 Javascript
go语言计算两个时间的时间差方法
2015/03/13 Python
SQLite3中文编码 Python的实现
2017/01/11 Python
利用python实现简单的邮件发送客户端示例
2017/12/23 Python
python smtplib模块实现发送邮件带附件sendmail
2018/05/22 Python
Python 3.x基于Xml数据的Http请求方法
2018/12/28 Python
Python使用post及get方式提交数据的实例
2019/01/24 Python
python腾讯语音合成实现过程解析
2019/08/01 Python
使用Pycharm分段执行代码
2020/04/15 Python
Python存储读取HDF5文件代码解析
2020/11/25 Python
html5使用canvas实现弹幕功能示例
2017/09/11 HTML / CSS
微信小程序canvas实现水平、垂直居中效果
2020/02/05 HTML / CSS
介绍下WebSphere的安全性
2013/01/31 面试题
教师个人的自我评价分享
2014/01/02 职场文书
总经理助理职责
2014/02/04 职场文书
专业求职信撰写要诀
2014/02/18 职场文书
国际经济与贸易专业大学生职业规划书
2014/03/01 职场文书
畜牧兽医本科生的自我评价
2014/03/03 职场文书
生物科学专业毕业生求职信
2014/06/02 职场文书
银行客户经理岗位职责
2015/04/09 职场文书
幼儿园老师工作总结2015
2015/05/22 职场文书
公司借条范本
2015/05/25 职场文书
Python jiaba库的使用详解
2021/11/23 Python
Pillow图像处理库安装及使用
2022/04/12 Python