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 window.document的属性、方法和事件小结
Oct 24 Javascript
JS获取地址栏参数的几种方法小结
Feb 28 Javascript
js中document.write使用过程中的一点疑问解答
Mar 20 Javascript
angularJS 入门基础
Feb 09 Javascript
Javascript中With语句用法实例
May 14 Javascript
详解 javascript中offsetleft属性的用法
Nov 11 Javascript
当jquery ajax遇上401请求的解决方法
May 19 Javascript
JS实现随机颜色的3种方法与颜色格式的转化
Jan 05 Javascript
实现elementUI表单的全局验证的方法步骤
Apr 29 Javascript
JS插件amCharts实现绘制柱形图默认显示数值功能示例
Nov 26 Javascript
vue-drag-chart 拖动/缩放图表组件的实例代码
Apr 10 Javascript
微信小程序点击滚动到指定位置的实现
May 22 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访问查询mysql数据的三种方法
2006/10/09 PHP
解析用PHP实现var_export的详细介绍
2013/06/20 PHP
PHP基于数组实现的分页函数实例
2014/08/20 PHP
php格式化时间戳显示友好的时间实现思路及代码
2014/10/23 PHP
php获取flash尺寸详细数据的方法
2016/11/12 PHP
ThinkPHP框架实现数据增删改
2017/05/07 PHP
javascript针对DOM的应用分析(三)
2012/04/15 Javascript
jQuery中Form相关知识汇总
2015/01/06 Javascript
简介JavaScript中的getUTCFullYear()方法的使用
2015/06/10 Javascript
JQuery在循环中绑定事件的问题详解
2016/06/02 Javascript
Vue.js:使用Vue-Router 2实现路由功能介绍
2017/02/22 Javascript
Vue中使用vux配置代码详解
2018/09/16 Javascript
详解angular2.x创建项目入门指令
2018/10/11 Javascript
微信小程序实现笑脸评分功能
2018/11/03 Javascript
微信小程序 授权登录详解(附完整源码)
2019/08/23 Javascript
React+Redux实现简单的待办事项列表ToDoList
2019/09/29 Javascript
浅谈vant组件Picker 选择器选单选问题
2020/11/04 Javascript
tornado捕获和处理404错误的方法
2014/02/26 Python
python 3.5实现检测路由器流量并写入txt的方法实例
2017/12/17 Python
Python在for循环中更改list值的方法【推荐】
2018/08/17 Python
利用python将图片版PDF转文字版PDF
2019/05/03 Python
Django MEDIA的配置及用法详解
2019/07/25 Python
Python 内置变量和函数的查看及说明介绍
2019/12/25 Python
使用keras和tensorflow保存为可部署的pb格式
2020/05/25 Python
Python内置函数property()如何使用
2020/09/01 Python
数控技术应届生求职信
2013/11/13 职场文书
业务助理岗位职责
2013/11/18 职场文书
食堂个人先进事迹
2014/01/22 职场文书
秋季运动会广播稿
2014/02/22 职场文书
公司经理任命书
2014/06/05 职场文书
单位消防安全责任书
2014/07/23 职场文书
2014年加油站工作总结
2014/12/04 职场文书
2015年女生节活动总结
2015/02/27 职场文书
开国大典观后感
2015/06/04 职场文书
python绘图subplots函数使用模板的示例代码
2021/04/30 Python
Python使用DFA算法过滤内容敏感词
2022/04/22 Python