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 相关文章推荐
初学prototype,发个JS接受URL参数的代码
Sep 25 Javascript
JScript中使用ADODB.Stream判断文件编码的代码
Jun 09 Javascript
学习javascript,实现插入排序实现代码
Jul 31 Javascript
jquery miniui 教程 表格控件 合并单元格应用
Nov 25 Javascript
Javascript全局变量var与不var的区别深入解析
Dec 09 Javascript
jquery mobile界面数据刷新的实现方法
May 28 Javascript
JavaScript中全选、全不选、反选、无刷新删除、批量删除、即点即改入库(在yii框架中操作)的代码分享
Nov 01 Javascript
Vue.js 动态为img的src赋值方法
Mar 14 Javascript
详解Angular中通过$location获取地址栏的参数
Aug 02 Javascript
layui实现form表单同时提交数据和文件的代码
Oct 25 Javascript
p5.js绘制创意自画像
Nov 04 Javascript
环形加载进度条封装(Vue插件版和原生js版)
Dec 04 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遍历目录输出目录及其下的所有文件示例
2014/01/27 PHP
了解PHP的返回引用和局部静态变量
2015/06/04 PHP
javascript 字符 Escape,encodeURI,encodeURIComponent
2009/07/09 Javascript
IE6 弹出Iframe层中的文本框“经常”无法获得输入焦点
2009/12/27 Javascript
Jquery判断IE6等浏览器的代码
2011/04/05 Javascript
Moment.js 不容错过的超棒Javascript日期处理类库
2012/04/15 Javascript
javascript简单事件处理和with用法介绍
2013/09/16 Javascript
JS测试显示屏分辨率以及屏幕尺寸的方法
2013/11/22 Javascript
node.js中的emitter.emit方法使用说明
2014/12/10 Javascript
javascript中函数作为参数调用的方法
2015/02/09 Javascript
jQuery实现提示密码强度的代码
2015/07/15 Javascript
VUEJS实战之利用laypage插件实现分页(3)
2016/06/13 Javascript
jQuery实现的多张图无缝滚动效果【测试可用】
2016/09/12 Javascript
BooStrap对导航条的改造实践小结
2016/09/21 Javascript
jQuery将表单序列化成一个Object对象的实例
2016/11/29 Javascript
Angular.js实现多个checkbox只能选择一个的方法示例
2017/02/24 Javascript
详解前后端分离之VueJS前端
2017/05/24 Javascript
layui中使用jquery控制radio选中事件的示例代码
2018/08/15 jQuery
React Hooks的深入理解与使用
2018/11/12 Javascript
JavaScript动态检测密码强度原理及实现方法详解
2019/06/11 Javascript
python实现simhash算法实例
2014/04/25 Python
使用pycharm设置控制台不换行的操作方法
2019/01/19 Python
python3 实现爬取TOP500的音乐信息并存储到mongoDB数据库中
2019/08/24 Python
Python 项目转化为so文件实例
2019/12/23 Python
详解CSS3开启硬件加速的使用和坑
2017/08/21 HTML / CSS
彼得罗夫美国官网:Peter Thomas Roth美国(青瓜面膜)
2017/11/05 全球购物
static全局变量与普通的全局变量有什么区别
2014/05/27 面试题
自动化职业生涯规划书范文
2014/01/03 职场文书
高一英语教学反思
2014/01/22 职场文书
优秀毕业自我鉴定
2014/02/15 职场文书
三八妇女节活动总结
2014/05/04 职场文书
水利水电建筑施工应届生求职信
2014/07/04 职场文书
节水倡议书
2015/01/19 职场文书
幼儿园辞职书
2015/02/26 职场文书
2015年银行工作总结范文
2015/04/01 职场文书
小程序与后端Java接口交互实现HelloWorld入门
2021/07/09 Java/Android