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 相关文章推荐
CutePsWheel javascript libary 控制输入文本框为可使用滚轮控制的js库
Feb 07 Javascript
IE下js调试工具Companion.JS
Oct 15 Javascript
js中更短的 Array 类型转换
Oct 30 Javascript
使用非html5实现js板连连看游戏示例代码
Sep 22 Javascript
JavaScript中的splice()方法使用详解
Jun 09 Javascript
JavaScript中调用函数的4种方式代码实例
Jul 08 Javascript
jQuery ajax提交Form表单实例(附demo源码)
Apr 06 Javascript
JS中substring与substr的用法
Nov 16 Javascript
详解Node.js实现301、302重定向服务
Apr 07 Javascript
详解vue数据渲染出现闪烁问题
Jun 29 Javascript
vue axios请求频繁时取消上一次请求的方法
Nov 10 Javascript
JS中的const命令你真懂它吗
Mar 08 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/07/26 PHP
PHP+jQuery 注册模块的改进(一):验证码存入SESSION
2014/10/14 PHP
Windows2003下php5.4安装配置教程(IIS)
2016/06/30 PHP
php实现和c#一致的DES加密解密实例
2017/07/24 PHP
php 实现银联商务H5支付的示例代码
2019/10/12 PHP
jQuery使用正则表达式替换dom元素标签用法示例
2017/01/16 Javascript
JS声明对象时属性名加引号与不加引号的问题及解决方法
2018/02/16 Javascript
3种vue路由传参的基本模式
2018/02/22 Javascript
JS实现自定义弹窗功能
2018/08/08 Javascript
javascript实现对话框功能警告(alert 消息对话框)确认(confirm 消息对话框)
2019/05/07 Javascript
微信小程序动态显示项目倒计时
2019/06/20 Javascript
JavaScript中的全局属性与方法深入解析
2020/06/14 Javascript
js 函数性能比较方法
2020/08/24 Javascript
Python打印scrapy蜘蛛抓取树结构的方法
2015/04/08 Python
使用PyCharm配合部署Python的Django框架的配置纪实
2015/11/19 Python
python 借助numpy保存数据为csv格式的实现方法
2018/07/04 Python
numpy数组之存取文件的实现示例
2019/05/24 Python
使用Python检测文章抄袭及去重算法原理解析
2019/06/14 Python
Django REST framework 分页的实现代码
2019/06/19 Python
django 捕获异常和日志系统过程详解
2019/07/18 Python
pytorch中获取模型input/output shape实例
2019/12/30 Python
Python 实现自动获取种子磁力链接方式
2020/01/16 Python
OpenCV 之按位运算举例解析
2020/06/19 Python
使用keras时input_shape的维度表示问题说明
2020/06/29 Python
css3的transform造成z-index无效解决方案
2014/12/04 HTML / CSS
世界上最好的威士忌和烈性酒购买网站:The Whisky Exchange
2016/11/20 全球购物
速卖通欧盟:Aliexpress EU
2020/08/19 全球购物
旅游与酒店管理的自我评价分享
2013/11/03 职场文书
实习求职信
2013/12/01 职场文书
奥巴马连任演讲稿
2014/05/15 职场文书
企业承诺书格式范文
2015/04/28 职场文书
楚门的世界观后感
2015/06/03 职场文书
纪念建国70周年演讲稿
2019/07/19 职场文书
Python爬虫入门案例之爬取去哪儿旅游景点攻略以及可视化分析
2021/10/16 Python
Vue自定义铃声提示音组件的实现
2022/01/22 Vue.js
正则表达式拆分url实例代码
2022/02/24 Java/Android