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 Autocomplete自动完成插件
Jul 17 Javascript
js实现点击链接后延迟3秒再跳转的方法
Jun 05 Javascript
JavaScript实现数组随机排序的方法
Jun 26 Javascript
强大Vue.js组件浅析
Sep 12 Javascript
JS代码实现百度地图 画圆 删除标注
Oct 12 Javascript
解决Angular.Js与Django标签冲突的方案
Dec 20 Javascript
JS基于面向对象实现的选项卡效果示例
Dec 20 Javascript
微信小程序 实现点击添加移除class
Jun 12 Javascript
vue路由跳转时判断用户是否登录功能的实现
Oct 26 Javascript
JS如何把字符串转换成json
Feb 21 Javascript
Javascript作用域和作用域链原理解析
Mar 03 Javascript
Node.js fs模块原理及常见用途
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中Session的生成机制、回收机制和存储机制探究
2014/08/19 PHP
PHP中通过fopen()函数访问远程文件示例
2014/11/18 PHP
PHPStorm 2020.1 调试 Nodejs的多种方法详解
2020/09/17 NodeJs
javascript 简单抽屉效果的实现代码
2010/03/09 Javascript
jQuery选择没有colspan属性的td的代码
2010/07/06 Javascript
jQuery使用一个按钮控制图片的伸缩实现思路
2013/04/19 Javascript
js获得指定控件输入光标的坐标兼容IE,Chrome,火狐等多种主流浏览器
2013/05/21 Javascript
node.js实现BigPipe详解
2014/12/05 Javascript
Jquery实现鼠标移动放大图片功能实例
2015/03/25 Javascript
javascript十六进制及二进制转化的方法
2015/05/06 Javascript
页面间固定参数,通过cookie传值的实现方法
2017/05/31 Javascript
JavaScript中使用import 和require打包后实现原理分析
2018/03/07 Javascript
详解微信JS-SDK选择图片遇到的坑
2018/08/15 Javascript
JS实现方形抽奖效果
2018/08/27 Javascript
在Vue中获取组件声明时的name属性方法
2018/09/12 Javascript
Vue.js更改调试地址端口号的实例
2018/09/19 Javascript
Jquery的Ajax技术使用方法
2019/01/21 jQuery
NodeJS读取分析Nginx错误日志的方法
2019/05/14 NodeJs
vue各种事件监听实例(小结)
2020/06/24 Javascript
[10:24]郎朗助力完美“圣”典,天籁交织奏响序曲
2016/12/18 DOTA
浅谈python迭代器
2017/11/08 Python
python获取Pandas列名的几种方法
2019/08/07 Python
浅析PEP572: 海象运算符
2019/10/15 Python
python ffmpeg任意提取视频帧的方法
2020/02/21 Python
浅析pip安装第三方库及pycharm中导入第三方库的问题
2020/03/10 Python
详解CSS3的perspective属性设置3D变换距离的方法
2016/05/23 HTML / CSS
纽约通行卡:The New York Pass(免费游览纽约90多个景点)
2017/07/29 全球购物
英国时尚运动品牌的合集:The Sports Edit
2017/12/20 全球购物
吉尔德利巧克力公司:Ghirardelli Chocolate Company
2019/03/27 全球购物
大学毕业生文采飞扬的自我鉴定
2013/12/03 职场文书
任命书怎么写
2014/06/04 职场文书
法人代表身份证明书及授权委托书
2014/09/16 职场文书
大学生自我评价范文
2015/03/03 职场文书
机修车间主任岗位职责
2015/04/08 职场文书
2015质检员个人年终工作总结
2015/10/23 职场文书
Python requests用法和django后台处理详解
2022/03/19 Python