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 相关文章推荐
javascript代码编写需要注意的7个小细节小结
Sep 21 Javascript
jquery1.83 之前所有与异步列队相关的模块详细介绍
Nov 13 Javascript
无限树Jquery插件zTree的常用功能特性总结
Sep 11 Javascript
javascript检测是否联网的实现代码
Sep 28 Javascript
js实现div弹出层的方法
Nov 20 Javascript
JS+CSS实现类似QQ好友及黑名单效果的树型菜单
Sep 22 Javascript
js代码实现点击按钮出现60秒倒计时
Jan 28 Javascript
基于JavaScript实现百度搜索框效果
Jun 28 Javascript
jQuery获取复选框选中的当前行的某个字段的值
Sep 15 jQuery
微信小程序实现打开内置地图功能【附源码下载】
Dec 07 Javascript
微信小程序跨页面传递data数据方法解析
Dec 13 Javascript
vue实现移动端返回顶部
Oct 12 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
追忆往昔!浅谈收音机的百年发展历史
2021/03/01 无线电
phpmyadmin操作流程
2006/10/09 PHP
php树型类实例
2014/12/05 PHP
基于PHP实现短信验证码发送次数限制
2020/07/11 PHP
js 发个判断字符串是否为符合标准的函数
2009/04/27 Javascript
在浏览器中获取当前执行的脚本文件名的代码
2011/07/19 Javascript
五段实用的js高级技巧
2011/12/20 Javascript
ff chrome和ie下全局动态定位的异同及全局高度的取法
2014/06/30 Javascript
浅谈JavaScript Array对象
2014/12/29 Javascript
JavaScript实现非常简单实用的下拉菜单效果
2015/08/27 Javascript
jquery对象和DOM对象的相互转换详解
2016/10/18 Javascript
利用select实现年月日三级联动的日期选择效果【推荐】
2016/12/13 Javascript
js图片放大镜效果实现方法详解
2020/10/28 Javascript
JavaScript实现旋转轮播图
2020/08/18 Javascript
详解vue-cli中的ESlint配置文件eslintrc.js
2017/09/25 Javascript
node.js中fs文件系统目录操作与文件信息操作
2018/02/24 Javascript
详解javascript 变量提升(Hoisting)
2019/03/12 Javascript
ES6小技巧之代替lodash
2019/06/07 Javascript
jquery轻量级数字动画插件countUp.js使用详解
2019/10/17 jQuery
在Python的Django框架中编写错误提示页面
2015/07/22 Python
Python中import机制详解
2017/11/14 Python
python判断完全平方数的方法
2018/11/13 Python
python在新的图片窗口显示图片(图像)的方法
2019/07/11 Python
python中bytes和str类型的区别
2019/10/21 Python
关于sys.stdout和print的区别详解
2019/12/05 Python
Python使用xpath实现图片爬取
2020/09/16 Python
如何用border-image实现文字气泡边框的示例代码
2020/01/21 HTML / CSS
怎样实现H5+CSS3手指滑动切换图片的示例代码
2019/05/05 HTML / CSS
Old Navy加拿大官网:美式休闲服饰品牌
2017/09/26 全球购物
行政管理人员精品工作推荐信
2013/11/04 职场文书
六十岁生日答谢词
2014/01/10 职场文书
优秀党务工作者先进事迹材料
2014/12/25 职场文书
个人党性锻炼总结
2015/03/05 职场文书
市场营销计划书
2019/04/24 职场文书
如何判断微信付款码和支付宝付款码
2021/04/01 PHP
关于HTML编码导致的乱码问题
2021/09/04 HTML / CSS