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 相关文章推荐
第七篇Bootstrap表单布局实例代码详解(三种表单布局)
Jun 21 Javascript
JS仿百度自动下拉框模糊匹配提示
Jul 25 Javascript
jQuery flip插件实现的翻牌效果示例【附demo源码下载】
Sep 20 Javascript
ES6中Math对象新增的方法实例详解
Apr 25 Javascript
AngularJS获取json数据的方法详解
May 27 Javascript
jquery实现下拉菜单的手风琴效果
Jul 23 jQuery
jQury Ajax使用Token验证身份实例代码
Sep 22 Javascript
浅谈在vue中用webpack打包之后运行文件的问题以及相关配置方法
Feb 21 Javascript
微信小程序登录换取token的教程
May 31 Javascript
JavaScript模板引擎应用场景及实现原理详解
Dec 14 Javascript
node.js事件轮询机制原理知识点
Dec 22 Javascript
k8s node节点重新加入master集群的实现
Feb 22 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
如何使用动态共享对象的模式来安装PHP
2006/10/09 PHP
php 操作符与控制结构
2012/03/07 PHP
Laravel获取当前请求的控制器和方法以及中间件的例子
2019/10/11 PHP
通过Jquery遍历Json的两种数据结构的实现代码
2011/01/19 Javascript
一些实用的jQuery代码片段收集
2011/07/12 Javascript
一个JQuery写的点击上下滚动的小例子
2011/08/27 Javascript
javascript拖拽上传类库DropzoneJS使用方法
2013/12/05 Javascript
FF IE浏览器修改标签透明度的方法
2014/01/27 Javascript
JavaScript通过代码调用Flash显示的方法
2016/02/02 Javascript
浅析Bootstrap缩略图组件与警示框组件
2016/04/29 Javascript
浅谈Sublime Text 3运行JavaScript控制台
2016/06/06 Javascript
浅谈JS中的bind方法与函数柯里化
2016/08/10 Javascript
jQuery 翻页组件yunm.pager.js实现div局部刷新的思路
2016/08/11 Javascript
bootstrap折叠调用collapse()后data-parent不生效的快速解决办法
2017/02/23 Javascript
JavaScript模块详解
2017/12/18 Javascript
详解如何构建一个Angular6的第三方npm包
2018/09/07 Javascript
Vue修改项目启动端口号方法
2019/11/07 Javascript
使用Bootstrap做一个朝代历史表
2019/12/10 Javascript
在Python中使用元类的教程
2015/04/28 Python
python实现生命游戏的示例代码(Game of Life)
2018/01/24 Python
Python即时网络爬虫项目启动说明详解
2018/02/23 Python
python实现AES加密与解密
2019/03/28 Python
Python pandas DataFrame操作的实现代码
2019/06/21 Python
Python paramiko模块使用解析(实现ssh)
2019/08/30 Python
Python中的四种交换数值的方法解析
2019/11/18 Python
解决python3中os.popen()出错的问题
2020/11/19 Python
Nuts.com:优质散装,批发坚果、干果和巧克力等
2017/03/21 全球购物
汽车检测与维修应届毕业生求职信
2013/10/19 职场文书
个人求职信范例
2014/01/29 职场文书
党员实事承诺书
2014/03/26 职场文书
人力资源管理求职信
2014/08/07 职场文书
亲属关系公证书样本
2015/01/23 职场文书
2015年小学美术工作总结
2015/05/25 职场文书
常用的文件对应的MIME类型汇总
2022/04/26 HTML / CSS
Windows server 2012 配置Telnet以及用法详解
2022/04/28 Servers
win10拖拽文件时崩溃怎么解决?win10文件不能拖拽问题解决方法
2022/08/14 数码科技