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实现上传图片前的预览(TX的面试题)
Aug 20 Javascript
为Extjs加加速(javascript加速)
Aug 19 Javascript
让ie运行js时提示允许阻止内容运行的解决方法
Oct 24 Javascript
基于JQuery实现异步刷新的代码(转载)
Mar 29 Javascript
jquery插件制作 自增长输入框实现代码
Aug 17 jQuery
javascript自动给文本url地址增加链接的方法分享
Jan 20 Javascript
javascript使用window.open提示“已经计划系统关机”的原因
Aug 15 Javascript
JavaScript实现的一个计算数字步数的算法分享
Dec 06 Javascript
Javascript实现计算个人所得税
May 10 Javascript
模板视图和AngularJS之间冲突的解决方法
Nov 22 Javascript
JavaScript函数apply()和call()用法与异同分析
Aug 10 Javascript
vue 实现一个简单的全局调用弹窗案例
Sep 10 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 Memcache 中实现消息队列
2009/11/24 PHP
PHP获取MAC地址的函数代码
2011/09/11 PHP
Thinkphp实现MySQL读写分离操作示例
2014/06/25 PHP
thinkphp中session和cookie无效的解决方法
2014/12/19 PHP
Symfony模板的快捷变量用法实例
2016/03/17 PHP
PHP基于反射机制实现插件的可插拔设计详解
2016/11/10 PHP
lnmp安装多版本PHP共存的方法详解
2018/08/02 PHP
PHP使用openssl扩展实现加解密方法示例
2020/02/20 PHP
jQuery 过滤not()与filter()实例代码
2012/05/10 Javascript
js复制网页内容并兼容各主流浏览器的代码
2013/12/17 Javascript
jQuery中:selected选择器用法实例
2015/01/04 Javascript
全面解析Bootstrap表单使用方法(表单样式)
2015/11/24 Javascript
jQuery图片前后对比插件beforeAfter用法示例【附demo源码下载】
2016/09/20 Javascript
JavaScript 计算笛卡尔积实例详解
2016/12/02 Javascript
bootstrap datetimepicker日期插件使用方法
2017/01/13 Javascript
JQuery validate 验证一个单独的表单元素实例
2017/02/17 Javascript
详解nodejs操作mongodb数据库封装DB类
2017/04/10 NodeJs
Flask中获取小程序Request数据的两种方法
2017/05/12 Javascript
vue登录路由验证的实现
2017/12/13 Javascript
Vue动态控制input的disabled属性的方法
2018/06/26 Javascript
在vue中使用公共过滤器filter的方法
2018/06/26 Javascript
jquery插件实现轮播图效果
2020/10/19 jQuery
[02:29]大剑、皮鞭、女装,这届DOTA2勇士令状里都有
2020/07/17 DOTA
Python遍历numpy数组的实例
2018/04/04 Python
Python3爬虫之自动查询天气并实现语音播报
2019/02/21 Python
Python的互斥锁与信号量详解
2019/09/12 Python
python+requests接口压力测试500次,查看响应时间的实例
2020/04/30 Python
Django Model中字段(field)的各种选项说明
2020/05/19 Python
使用pyplot.matshow()函数添加绘图标题
2020/06/16 Python
基于html和CSS3制作酷炫的导航栏
2015/09/23 HTML / CSS
医院安全生产月活动总结
2014/07/05 职场文书
2015年社区党务工作总结
2015/04/21 职场文书
2015人事行政工作总结范文
2015/05/21 职场文书
追悼会答谢词范文
2015/09/29 职场文书
2016学校元旦晚会经典开场白台词
2015/12/03 职场文书
Win11电源已接通但未充电怎么办?Win11电源已接通未充电的解决方法
2022/04/05 数码科技