文档章节

js xml操作

剑禅觅心
 剑禅觅心
发布于 2016/08/01 21:30
字数 624
阅读 7
收藏 0
转载于博客园---js xml操作

我的xml文件Login.xml如下.

<? xml version="1.0" encoding="utf-8"  ?>
< Login >
    
< Character >
        
< Text ="热血"  Value ="0" ></ C >
        
< Text ="弱气"  Value ="1" ></ C >
        
< Text ="激情"  Value ="2" ></ C >
        
< Text ="冷静"  Value ="3" ></ C >
        
< Text ="冷酷"  Value ="4" ></ C >
    
</ Character >
    
< Weapon >
        
< Text ="光束剑"  Value ="0" ></ W >
        
< Text ="光束配刀"  Value ="1" ></ W >
    
</ Weapon >
    
< EconomyProperty >
        
< Text ="平均型"  Value ="0" ></ P >
        
< Text ="重视攻击"  Value ="1" ></ P >
        
< Text ="重视敏捷"  Value ="2" ></ P >
        
< Text ="重视防御"  Value ="3" ></ 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来定位节点,这样子会有更好的性能.

本文转载自:http://blog.csdn.net/amohan/article/details/11846431

共有 人打赏支持
剑禅觅心
粉丝 6
博文 224
码字总数 0
作品 0
深圳
高级程序员
私信 提问
第一章—JavaScript简介

一.①DOM:Document Object Model文件对象模型 ②AJAX:Asynchronous Javascript And XML异步Javascript和XML ③CSS,Cascading Style Sheets,级联样式表 ④ECMAScript(European Computer......

湖心亭看雪
2014/10/21
0
0
jQuery、ajax、JSON

最近在做项目的过程中,对于jQuery、ajax、JSON这三者的关系总是理不清楚,于是,在简单是使用,有了丁点的经验,于是对这三者的关系做了下研究: 1、jQuery : 以下来自百度百科 jQuery是一个...

伊人心
2018/12/28
0
0
Discuz 7.2坑爹集锦-js篇

Discuz 7.2坑爹集锦-js篇 在调试DZ过程中firebug经常提示common.js出错,什么“Error: s is null”,“$ is not defined”,“BROWSER not defined”。其实多半和XML有关:当ajax操作时后台P...

mark35
2012/01/12
0
2
第一章--JavaScript简介

1. JavaScript的构成 1.1. ECMAScript ECMAScript规定了核心语言的组成部分分别为:语法、类型、语句、关键字、保留字、操作符、对象。 宿主环境:Web浏览器、Node、Adobe Flash。 1.2. DOM...

lovewt
2018/06/05
0
0
JavaScript学习笔记(一)——JS基础知识介绍

术语解释 Javascript是一种由Netscape的LiveScript发展而来的原型化继承的面向对象的动态类型的区分大小写的客户端脚本语言,主要目的是为了解决服务器端语言,比如Perl,遗留的速度问题,为...

长平狐
2013/01/06
113
0

没有更多内容

加载失败,请刷新页面

加载更多

一致性hash和虚拟节点

consistent hashing 算法的原理 consistent hashing 是一种 hash 算法,简单的说,在移除 / 添加一个 cache 时,它能够尽可能小的改变已存在key 映射关系,尽可能的满足单调性的要求。 下面就...

群星纪元
18分钟前
2
0
说一下Dubbo 的工作原理?注册中心挂了可以继续通信吗?

面试题 说一下的 dubbo 的工作原理?注册中心挂了可以继续通信吗?说说一次 rpc 请求的流程? 面试官心理分析 MQ、ES、Redis、Dubbo,上来先问你一些思考性的问题、原理,比如 kafka 高可用架...

李红欧巴
29分钟前
19
0
腾讯面试:一条SQL语句执行得很慢的原因有哪些?

说实话,这个问题可以涉及到 MySQL 的很多核心知识,可以扯出一大堆,就像要考你计算机网络的知识时,问你“输入URL回车之后,究竟发生了什么”一样,看看你能说出多少了。 之前腾讯面试的实...

java菜分享
47分钟前
11
0
Java 基本功 之 CAS

本文首发于个人公众号《andyqian》, 期待你的关注! 前言 在Java并发编程中,我们经常使用锁对竞争资源予以并发控制,以解决资源竞争的问题。但无论是使用 Lock 还是 Synchronized,随着锁机...

andyqian
51分钟前
4
0
信号量与条件变量的区别

注意信号量与条件变量的区别 信号量内容可见:http://www.cnblogs.com/charlesblc/p/6142868.html 信号量、共享内存,以及消息队列等System V IPC三剑客主要关注进程间通信; 而条件变量、互...

shzwork
今天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部