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借助ActiveXObject实现创建文件
Sep 29 Javascript
用js读、写、删除Cookie代码分享及详细注释说明
Jun 05 Javascript
JS实现点击文字对应DIV层不停闪动效果的方法
Mar 02 Javascript
深入了解JavaScript中的Symbol的使用方法
Jul 28 Javascript
jquery插件uploadify实现带进度条的文件批量上传
Dec 13 Javascript
AngularJS自定义插件实现网站用户引导功能示例
Nov 07 Javascript
详解如何在vue中使用sass
Jun 21 Javascript
vue中路由验证和相应拦截的使用详解
Dec 13 Javascript
VueX模块的具体使用(小白教程)
Jun 05 Javascript
vue proxy 的优势与使用场景实现
Jun 15 Javascript
JavaScript常用进制转换及位运算实例解析
Oct 14 Javascript
微信小程序实现购物车小功能
Dec 30 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
URL Rewrite的设置方法
2007/01/02 PHP
攻克CakePHP系列一 连接MySQL数据库
2008/10/22 PHP
深入php list()函数的详解
2013/06/05 PHP
PHP代码优化技巧小结
2015/09/29 PHP
PHP面试题之文件目录操作
2015/10/15 PHP
php中的buffer缓冲区用法分析
2019/05/31 PHP
phpQuery采集网页实现代码实例
2020/04/02 PHP
用js实现键盘方向键翻页功能的代码
2007/06/03 Javascript
javascript 放大镜效果js组件 qsoft.PopBigImage.v0.35 加入了chrome支持
2009/04/07 Javascript
如何确保JavaScript的执行顺序 之jQuery.html并非万能钥匙
2011/03/03 Javascript
固定背景实现的背景滚动特效示例分享
2013/05/19 Javascript
javascript中验证大写字母、数字和中文
2014/01/15 Javascript
js过滤特殊字符输入适合输入、粘贴、拖拽多种情况
2014/03/22 Javascript
JavaScript代码编写中各种各样的坑和填坑方法
2014/06/06 Javascript
jQuery实现返回顶部功能适合不支持js的浏览器
2014/08/19 Javascript
JavaScript实现自动变换表格边框颜色
2015/05/08 Javascript
利用原生JS自动生成文章标题树的实例
2016/08/22 Javascript
[原创]javascript typeof id==='string'?document.getElementById(id):id解释
2016/11/02 Javascript
详解JS中定时器setInterval和setTImeout的this指向问题
2017/01/06 Javascript
获取url中用&amp;隔开的参数实例(分享)
2017/05/28 Javascript
Vue.js项目中管理每个页面的头部标签的两种方法
2018/06/25 Javascript
微信小程序版本自动更新的方法
2019/06/14 Javascript
JS+JQuery实现无缝连接轮播图
2020/12/30 jQuery
[02:53]DOTA2英雄昆卡基础教程
2013/11/25 DOTA
Python基于Tkinter的HelloWorld入门实例
2015/06/17 Python
总结python爬虫抓站的实用技巧
2016/08/09 Python
深入理解Python中的*重复运算符
2017/10/28 Python
Django model update的多种用法介绍
2020/03/28 Python
简单了解python中的与或非运算
2019/09/18 Python
tensorflow 环境变量设置方式
2020/02/06 Python
学习自我鉴定
2014/02/01 职场文书
能源工程专业应届生求职信
2014/03/01 职场文书
物流管理毕业生自荐信范文
2014/03/15 职场文书
园林技术专业求职信
2014/07/28 职场文书
个人四风问题对照检查材料思想汇报
2014/10/06 职场文书
2014年审计人员工作总结
2014/12/19 职场文书