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 24 Javascript
javascript 模拟坦克大战游戏(html5版)附源码下载
Apr 08 Javascript
js函数调用的方式
May 06 Javascript
JQuery删除DOM节点的方法
Jun 11 Javascript
浅谈javascript构造函数与实例化对象
Jun 22 Javascript
理解和运用JavaScript的闭包机制
Aug 13 Javascript
JS实现图片高亮展示效果实例
Nov 24 Javascript
js正则表达式replace替换变量方法
May 21 Javascript
Vue封装一个简单轻量的上传文件组件的示例
Mar 21 Javascript
浅析JS中什么是自定义react数据验证组件
Oct 19 Javascript
angular中如何绑定iframe中src的方法
Feb 01 Javascript
sharp.js安装过程中遇到的问题总结
Apr 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
上海地方志办公室-上海电子仪表工业志
2021/03/04 无线电
php 魔术函数使用说明
2010/02/21 PHP
php cookie的操作实现代码(登录)
2010/12/29 PHP
php实现的css文件背景图片下载器代码
2014/11/11 PHP
php实现无限级分类(递归方法)
2015/08/06 PHP
PHP var关键字相关原理及使用实例解析
2020/07/11 PHP
jQuery中height()方法用法实例
2014/12/24 Javascript
jQuery实现仿腾讯迷你首页选项卡效果代码
2015/09/17 Javascript
AngularJS入门教程之REST和定制服务详解
2016/08/19 Javascript
微信小程序 网络请求(post请求,get请求)
2017/01/17 Javascript
Vue.js 2.0学习教程之从基础到组件详解
2017/04/24 Javascript
Easyui使用Dialog行内按钮布局的实例
2017/07/27 Javascript
详解webpack之scss和postcss-loader的配置
2018/01/09 Javascript
ES6下子组件调用父组件的方法(推荐)
2018/02/23 Javascript
python 数据加密代码
2008/12/24 Python
python实现的简单RPG游戏流程实例
2015/06/28 Python
Django中对数据查询结果进行排序的方法
2015/07/17 Python
理解生产者消费者模型及在Python编程中的运用实例
2016/06/26 Python
python反编译学习之字节码详解
2019/05/19 Python
python实现生成Word、docx文件的方法分析
2019/08/30 Python
python3实现高效的端口扫描
2019/08/31 Python
Django数据结果集序列化并展示实现过程
2020/04/22 Python
python中取绝对值简单方法总结
2020/07/24 Python
Python3 ffmpeg视频转换工具使用方法解析
2020/08/10 Python
html5 canvas的绘制文本自动换行的示例代码
2018/09/17 HTML / CSS
小狗电器官方商城:中国高端吸尘器品牌
2017/03/29 全球购物
2014年公司庆元旦活动方案
2014/03/05 职场文书
创建精神文明单位实施方案
2014/03/08 职场文书
产品质量承诺范本
2014/03/31 职场文书
优秀少先队员主要事迹材料
2014/05/28 职场文书
2015年初一班主任工作总结
2015/05/13 职场文书
在职证明格式样本
2015/06/15 职场文书
CSS实现多个元素在盒子内两端对齐效果
2021/03/30 HTML / CSS
Golang 实现超大文件读取的两种方法
2021/04/27 Golang
MySQL多表查询机制
2022/03/17 MySQL
MySQL的prepare使用以及遇到的bug
2022/05/11 MySQL