Js+XML 操作


Posted in Javascript onSeptember 20, 2006

xml文件Login.xml如下.

<?xml version="1.0" encoding="utf-8" ?> 
<Login> 
    <Character> 
        <C Text="热血" Value="0"></C> 
        <C Text="弱气" Value="1"></C> 
        <C Text="激情" Value="2"></C> 
        <C Text="冷静" Value="3"></C> 
        <C Text="冷酷" Value="4"></C> 
    </Character> 
    <Weapon> 
        <W Text="光束剑" Value="0"></W> 
        <W Text="光束配刀" Value="1"></W> 
    </Weapon> 
    <EconomyProperty> 
        <P Text="平均型" Value="0"></P> 
        <P Text="重视攻击" Value="1"></P> 
        <P Text="重视敏捷" Value="2"></P> 
        <P Text="重视防御" Value="3"></P> 
        <P Text="重视命中" Value="4"></P> 
    </EconomyProperty> 
</Login>

现在需要对这个xml文件的内容进行操作.
首先,我们需要加载这个xml文件,js中加载xml文件,是通过XMLDOM来进行的.
// 加载xml文档 
loadXML    = function(xmlFile) 
{ 
    var xmlDoc; 
    if(window.ActiveXObject) 
    { 
        xmlDoc    = new ActiveXObject('Microsoft.XMLDOM'); 
        xmlDoc.async    = false; 
        xmlDoc.load(xmlFile); 
    } 
    else if (document.implementation&&document.implementation.createDocument) 
    { 
        xmlDoc    = document.implementation.createDocument('', '', null); 
        xmlDoc.load(xmlFile); 
    } 
    else 
    { 
        return null; 
    }      
    return xmlDoc; 
}

xml文件对象出来了, 接下去我就要对这个文档进行操作了.
比如说,我们现在需要得到节点Login/Weapon/W的第一个节点的属性,那么我们可以如下进行.
// 首先对xml对象进行判断 
checkXMLDocObj    = function(xmlFile) 
{ 
    var xmlDoc    = loadXML(xmlFile); 
    if(xmlDoc==null) 
    { 
        alert('您的浏览器不支持xml文件读取,于是本页面禁止您的操作,推荐使用IE5.0以上可以解决此问题!'); 
        window.location.href='/Index.aspx'; 
    }     return xmlDoc; 
} 
// 然后开始获取需要的Login/Weapon/W的第一个节点的属性值 
var xmlDoc    = checkXMLDocObj('/EBS/XML/Login.xml'); 
var v    = xmlDoc.getElementsByTagName('Login/Weapon/W')[0].childNodes.getAttribute('Text')

而我在我的程序中的写法是这样子的,当然我在程序中的写法是已经应用到实际中的了.一并给出来,以供查看
initializeSelect    = function(oid, xPath) 
{ 
    var xmlDoc    = checkXMLDocObj('/EBS/XML/Login.xml'); 
    var n; 
    var l; 
    var e    = $(oid); 
    if(e!=null) 
    { 
        n    = xmlDoc.getElementsByTagName(xPath)[0].childNodes; 
        l    = n.length; 
        for(var i=0; i<l; i++) 
        { 
            var option    = document.createElement('option'); 
            option.value    = n[i].getAttribute('Value'); 
            option.innerHTML    = n[i].getAttribute('Text'); 
            e.appendChild(option); 
        } 
    } 
}

上面的访问代码中,我们是通过xmlDoc.getElementsByTagName(xPath)来进行的.
还可以通过xmlDoc.documentElement.childNodes(1)..childNodes(0).getAttribute('Text')进行访问.
一些常用方法:
xmlDoc.documentElement.childNodes(0).nodeName,可以得到这个节点的名称.
xmlDoc.documentElement.childNodes(0).nodeValue,可以得到这个节点的值. 这个值是来自于这样子的xml格式:<a>b</b>, 于是可以得到b这个值.
xmlDoc.documentElement.childNodes(0).hasChild,可以判断是否有子节点

根据我的经验,最好是使用getElementsByTagName(xPath)的方法对节点进行访问,因为这样子可以直接通过xPath来定位节点,这样子会有更好的性能. 

Javascript 相关文章推荐
JScript内置对象Array中元素的删除方法
Mar 08 Javascript
JQuery优缺点分析说明
Jun 09 Javascript
javascript数组去重3种方法的性能测试与比较
Mar 26 Javascript
基于JavaScript 数据类型之Boolean类型分析介绍
Apr 19 Javascript
javascript中expression的用法整理
May 13 Javascript
js控住DOM实现发布微博效果
Aug 30 Javascript
微信小程序getPhoneNumber获取用户手机号
Sep 29 Javascript
React组件中的this的具体使用
Feb 28 Javascript
Node.js实现注册邮箱激活功能的方法示例
Mar 23 Javascript
JS实现简单的点赞与踩功能示例
Dec 05 Javascript
Windows上node.js的多版本管理工具用法实例分析
Nov 06 Javascript
详解Node.js如何处理ES6模块
May 15 Javascript
发现的以前不知道的函数
Sep 19 #Javascript
多个iframe自动调整大小的问题
Sep 18 #Javascript
跨浏览器的设置innerHTML方法
Sep 18 #Javascript
JavaScript Base64编码和解码,实现URL参数传递。
Sep 18 #Javascript
JavaScript静态的动态
Sep 18 #Javascript
基于Web标准的UI组件 — 树状菜单(2)
Sep 18 #Javascript
JavaScript中的私有成员
Sep 18 #Javascript
You might like
解决文件名解压后乱码的问题 将文件名进行转码的代码
2012/01/10 PHP
PHP回调函数简单用法示例
2019/05/08 PHP
JavaScript For Beginners(转载)
2007/01/05 Javascript
使用javascript实现有效时间的控制,并显示将要过期的时间
2014/01/02 Javascript
让jQuery Mobile不显示讨厌loading界面的方法
2014/02/19 Javascript
ajax+jQuery实现级联显示地址的方法
2015/05/06 Javascript
一款简单的jQuery图片标注效果附源码下载
2016/03/22 Javascript
jQuery animate和CSS3相结合实现缓动追逐效果附源码下载
2016/04/18 Javascript
浅谈js的url解析函数封装
2016/06/28 Javascript
js事件源window.event.srcElement兼容性写法(详解)
2016/11/25 Javascript
利用jQuery插件imgAreaSelect实现获得选择域的图像信息
2016/12/02 Javascript
jQuery表格的维护和删除操作
2017/02/03 Javascript
JS中SetTimeout和SetInterval使用初探
2017/03/23 Javascript
基于JavaScript实现活动倒计时效果
2017/04/20 Javascript
使用Browserify来实现CommonJS的浏览器加载方法
2017/05/14 Javascript
最常用的jQuery表单验证(简单)
2017/05/23 jQuery
微信小程序 rich-text的使用方法
2017/08/04 Javascript
layui 上传图片 返回图片地址的方法
2019/09/26 Javascript
[01:00:35]2018DOTA2亚洲邀请赛3月30日B组 EffcetVSMineski
2018/03/31 DOTA
Python 2.7.x 和 3.x 版本的重要区别小结
2014/11/28 Python
Python批量修改文本文件内容的方法
2016/04/29 Python
Python实现端口检测的方法
2018/07/24 Python
Python两个字典键同值相加的几种方法
2019/03/05 Python
python实现图片转字符画的完整代码
2021/02/21 Python
澳大利亚首屈一指的鞋类品牌:Tony Bianco
2018/03/13 全球购物
Stutterheim瑞典:瑞典高级外套时装品牌
2019/06/24 全球购物
团支书的期末学习总结自我评价
2013/11/01 职场文书
青春寄语大全
2014/04/09 职场文书
调解协议书
2014/04/16 职场文书
干部个人考察材料
2014/12/24 职场文书
终止劳动合同通知书
2015/04/16 职场文书
2015年高校教师个人工作总结
2015/05/25 职场文书
培根随笔读书笔记
2015/07/01 职场文书
2016年秋季趣味运动会开幕词
2016/03/04 职场文书
2016年少先队活动总结
2016/04/06 职场文书
Redis分布式锁的7种实现
2022/04/01 Redis