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 相关文章推荐
js中将URL中的参数提取出来作为对象的实现代码
Aug 16 Javascript
模拟电子签章盖章效果的jQuery插件源码
Jun 24 Javascript
Query中click(),bind(),live(),delegate()的区别
Nov 19 Javascript
Javascript学习笔记之函数篇(六) : 作用域与命名空间
Nov 23 Javascript
JS原型链 详解及示例代码
Sep 06 Javascript
js 作用域和变量详解
Feb 16 Javascript
基于BootStrap的文本编辑器组件Summernote
Oct 27 Javascript
使用vue-cli打包过程中的步骤以及问题的解决
May 08 Javascript
vue-cli 3 全局过滤器的实例代码详解
Jun 03 Javascript
Vue 监听元素前后变化值实例
Jul 29 Javascript
vue elementui tree 任意级别拖拽功能代码
Aug 31 Javascript
关于angular引入ng-zorro的问题浅析
Sep 09 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
简单介绍下 PHP5 中引入的 MYSQLI的用途
2007/03/19 PHP
PHP在字符断点处截断文字的实现代码
2011/04/21 PHP
php提示无法加载或mcrypt没有找到 PHP 扩展 mbstring解决办法
2012/03/27 PHP
详解PHP中instanceof关键字及instanceof关键字有什么作用
2015/11/05 PHP
PHP购物车类Cart.class.php定义与用法示例
2016/07/20 PHP
Yii2增删改查之查询 where参数详细介绍
2016/08/08 PHP
基于jquery的无限级联下拉框js插件
2011/10/29 Javascript
jquery实现pager控件示例
2014/04/09 Javascript
JavaScript函数内部属性和函数方法实例详解
2016/03/17 Javascript
Bootstrap3制作图片轮播效果
2016/05/12 Javascript
Vue.js组件使用开发实例教程
2016/11/01 Javascript
jquery删除数组中重复元素
2016/12/05 Javascript
利用jQuery解析获取JSON数据
2017/04/08 jQuery
详解VUE 数组更新
2017/12/16 Javascript
Vue组件之极简的地址选择器的实现
2018/05/31 Javascript
Vue.js 事件修饰符的使用教程
2018/11/01 Javascript
vue+iview框架实现左侧动态菜单功能的示例代码
2020/07/23 Javascript
JS实现放大镜效果
2020/09/21 Javascript
javascript实现倒计时提示框
2021/03/02 Javascript
[01:13:51]TNC vs Serenity 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/19 DOTA
简介Python中用于处理字符串的center()方法
2015/05/18 Python
浅谈python requests 的put, post 请求参数的问题
2019/01/02 Python
pycharm修改file type方式
2019/11/19 Python
Django的ListView超详细用法(含分页paginate)
2020/05/21 Python
tensorflow实现残差网络方式(mnist数据集)
2020/05/26 Python
集团薪酬管理制度
2014/01/13 职场文书
给全校老师的建议书
2014/03/13 职场文书
个人自我鉴定总结
2014/03/25 职场文书
反腐倡廉标语
2014/06/24 职场文书
公司踏青活动方案
2014/08/16 职场文书
护理医院见习报告
2014/11/03 职场文书
2015年惩防体系建设工作总结
2015/05/22 职场文书
2016元旦主持人经典开场白台词
2015/12/03 职场文书
服务行业标语口号
2015/12/26 职场文书
《倍数和因数》教学反思
2016/02/23 职场文书
python 使用pandas读取csv文件的方法
2022/12/24 Python