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 相关文章推荐
javascript之ESC(第二类混淆)
May 06 Javascript
解决jquery中美元符号命名冲突问题
Jan 08 Javascript
require.js深入了解 require.js特性介绍
Sep 04 Javascript
HTML5实现留言和回复页面样式
Jul 22 Javascript
JavaScript中关键字 in 的使用方法详解
Oct 17 Javascript
彻底学会Angular.js中的transclusion
Mar 12 Javascript
Angular4学习笔记之新建项目的方法
Jul 18 Javascript
无限循环轮播图之运动框架(原生JS实现)
Oct 01 Javascript
vue项目打包后打开页面空白解决办法
Jun 29 Javascript
vue中利用simplemde实现markdown编辑器(增加图片上传功能)
Apr 29 Javascript
微信小程序实现渐入渐出动画效果
Jun 13 Javascript
vue实现一个6个输入框的验证码输入组件功能的实例代码
Jun 29 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读取txt文本文件并分页显示的方法
2015/03/11 PHP
jQuery each()方法的使用方法
2010/03/18 Javascript
iframe调用父页面函数示例详解
2014/07/17 Javascript
JavaScript中的数组操作介绍
2014/12/30 Javascript
利用jQuery和CSS将背景图片拉伸
2015/10/16 Javascript
js倒计时抢购实例
2015/12/20 Javascript
HTML5游戏引擎LTweenLite实现的超帅动画效果(附demo源码下载)
2016/01/26 Javascript
jQuery基于扩展简单实现倒计时功能的方法
2016/05/14 Javascript
一种基于浏览器的自动小票机打印实现方案(js版)
2016/07/26 Javascript
Bootstrap 3 按钮标签实例代码
2017/02/21 Javascript
详解vuex 中的 state 在组件中如何监听
2017/05/23 Javascript
Vue0.1的过滤代码如何添加到Vue2.0直接使用
2017/08/23 Javascript
bootstrap轮播模板使用方法详解
2017/11/17 Javascript
angular5 httpclient的示例实战
2018/03/12 Javascript
AngularJS下$http服务Post方法传递json参数的实例
2018/03/29 Javascript
Vue.js中对css的操作(修改)具体方式详解
2018/10/30 Javascript
微信小程序自定义可滑动日历界面
2018/12/28 Javascript
JavaScript实现与使用发布/订阅模式详解
2019/01/19 Javascript
深入理解nodejs搭建静态服务器(实现命令行)
2019/02/05 NodeJs
JavaScript 截取字符串代码实例
2019/09/05 Javascript
vue 实现走马灯效果
2019/10/28 Javascript
JSONP 的原理、理解 与 实例分析
2020/05/16 Javascript
python计算一个序列的平均值的方法
2015/07/11 Python
python中的格式化输出用法总结
2016/07/28 Python
Python简单定义与使用字典dict的方法示例
2017/07/25 Python
对pandas的dataframe绘图并保存的实现方法
2017/08/05 Python
Python通过类的组合模拟街道红绿灯
2020/09/16 Python
Docker如何部署Python项目的实现详解
2020/10/26 Python
Html5 语法与规则简要概述
2014/07/29 HTML / CSS
Europcar英国:英国汽车和货车租赁
2017/01/21 全球购物
绢花、人造花和人造花卉:BLOOM
2019/08/07 全球购物
Crabtree & Evelyn欧盟:豪华洗浴、身体和护发
2021/03/09 全球购物
教师师德师风个人整改方案
2014/09/18 职场文书
2015年南京大屠杀纪念日活动总结
2015/03/24 职场文书
2015年小学数学教研组工作总结
2015/05/21 职场文书
mysql数据库如何转移到oracle
2022/12/24 MySQL