JS实现加载和读取XML文件的方法详解


Posted in Javascript onApril 24, 2017

本文实例讲述了JS实现加载和读取XML文件的方法。分享给大家供大家参考,具体如下:

有时在开发时用到 JS 加载和读取XML文件的情况,写下提供参考,这里主要是分两步完成:

1. JS加载XML文件

步骤一般为(1),建立 XML DOM 对象;(2),设置加载方式,异步(推荐)或同步; (3)提供XML文件URL然后调用 load 方法;大致如下:

var xmlFileName="xxFile.xml";
var xmlDoc='';
if (window.ActiveXObject){ // IE
  var activeXNameList=new Array("MSXML2.DOMDocument.6.0","MSXML2.DOMDocument.5.0","MSXML2.DOMDocument.4.0","MSXML2.DOMDocument.3.0","MSXML2.DOMDocument","Microsoft.XMLDOM","MSXML.DOMDocument");
  for(var h=0;h<activeXNameList.length;h++)
  {
    try{
      xmlDoc=new ActiveXObject(activeXNameList[h]);
    }catch(e){
      continue;
    }
    if(xmlDoc) break;
  }
}else if(document.implementation && document.implementation.createDocument){ //非 IE
  xmlDoc=document.implementation.createDocument("","",null);
}else{
  alert('can not create XML DOM object, update your browser please...');
}
xmlDoc.async=false; //同步,防止后面程序处理时遇到文件还没加载完成出现的错误,故同步等XML文件加载完再做后面处理
xmlDoc.load(xmlFileName); //加载XML

2. JS读取XML文件节点

在加载XML文件之后就是读取XML文件的节点了,可以使用 DOM 相应的方法,对 MS IE 其它浏览器的读法相近,例如:

例如下的XML文件结构:

<visiter>
  <area areaid="shenzhen">
    <areaname>shenzhen</areaname>
    <user userid="001">
      <name>shenzhenNBA</name>
      <sex>man</sex>
    </user>
  </area>
  <area areaid="shanghai">
    <areaname>shenzhen</areaname>
    <user userid="002">
      <name>xiaoming</name>
      <sex>woman</sex>
    </user>
    <user userid="003">
      <name>zhangsan</name>
      <sex>man</sex>
    </user>
  </area>
</visiter>
//JS读取 XML 文件中的 area 节点的方式如下:
var nodeList= xmlDoc.documentElement.getElementsByTagName("area"); // IE
for(var i=0;i<nodeList.length;i++){
  //...遍历操作...
}
var nodeList=xmlDoc.getElementsByTagName("area"); // 非IE
for(var i=0;i<nodeList.length;i++){
  //...遍历操作...
}

还有部分读取节点的方法:

//MS IE
node.text ;   //读取node节点的文本值
node.childNodes[i].text ;  //读取 node 下的第 i 个[直接下一级]子节点的文本
node.getAttribute("attributeName") ;   //读取 node 节点的属性名称为 attributeName 的属性值
//还有其他的方法等, 可以网上搜索
//非 MS IE
node.nodeValue ;   //读取node节点的文本值
node.childNodes[i].nodeValue ;  //读取 node 下的第 i 个[直接下一级]子节点的文本
node.getAttribute("attributeName") ;   //读取 node 节点的属性名称为 attributeName 的属性值
//还有其他的方法等, 可以网上搜索
Javascript 相关文章推荐
javascript 特性检测并非浏览器检测
Jan 15 Javascript
js判读浏览器是否支持html5的canvas的代码
Nov 18 Javascript
一个JavaScript去除字符串末尾的空白实例代码
Sep 22 Javascript
javascript实现在指定元素中垂直水平居中
Sep 13 Javascript
javascript下拉列表菜单的实现方法
Nov 18 Javascript
jQuery实时显示鼠标指针位置和键盘ASCII码
Mar 28 Javascript
浅谈如何通过node.js对数据进行MD5加密
May 16 Javascript
解决Mac下安装nmp的淘宝镜像失败问题
May 16 Javascript
如何解决webpack-dev-server代理常切换问题
Jan 09 Javascript
微信小程序生成海报分享朋友圈的实现方法
May 06 Javascript
vue遍历生成的输入框 绑定及修改值示例
Oct 30 Javascript
JS实现水平移动与垂直移动动画
Dec 19 Javascript
JS简单获取日期相差天数的方法
Apr 24 #Javascript
Angular.js中控制器之间的传值详解
Apr 24 #Javascript
jquery submit()不能提交表单的解决方法
Apr 24 #jQuery
jquery实现异步加载图片(懒加载图片一种方式)
Apr 24 #jQuery
js前端实现图片懒加载(lazyload)的两种方式
Apr 24 #Javascript
angularjs中的$eval方法详解
Apr 24 #Javascript
浅谈angularjs依赖服务注入写法的注意点
Apr 24 #Javascript
You might like
一个域名查询的程序
2006/10/09 PHP
PHP 面向对象 PHP5 中的常量
2010/05/05 PHP
DEDE采集大师官方留后门的删除办法
2011/01/08 PHP
php学习之变量的使用
2011/05/29 PHP
PHP模块 Memcached功能多于Memcache
2011/06/14 PHP
利用PHP扩展vld查看PHP opcode操作步骤
2013/03/04 PHP
PHP使用gmdate实现将一个UNIX 时间格式化成GMT文本的方法
2015/03/19 PHP
提高php编程效率技巧
2015/08/13 PHP
详解PHP的Yii框架中扩展的安装与使用
2016/04/01 PHP
document.all的一个比较完整的总结及案例
2013/01/31 Javascript
浅谈javascript的调试
2015/01/28 Javascript
jquery append 动态添加的元素事件on 不起作用的解决方案
2015/07/30 Javascript
跟我学习javascript创建对象(类)的8种方法
2015/11/20 Javascript
javascript针对cookie的基本操作实例详解
2015/11/30 Javascript
基于jQuery实现选项卡效果
2017/01/04 Javascript
js实现常见的工具条效果
2017/03/02 Javascript
React应用中使用Bootstrap的方法
2017/08/15 Javascript
setTimeout时间设置为0详细解析
2018/03/13 Javascript
用react-redux实现react组件之间数据共享的方法
2018/06/08 Javascript
前端axios下载excel文件(二进制)的处理方法
2018/07/31 Javascript
JavaScript中构造函数与原型链之间的关系详解
2019/02/25 Javascript
Vue组件实现触底判断
2019/06/26 Javascript
利用原生JS实现欢乐水果机小游戏
2020/04/23 Javascript
Openlayers测量距离与面积的实现方法
2020/09/25 Javascript
Node.js path模块,获取文件后缀名操作
2020/11/07 Javascript
[01:00:10]完美世界DOTA2联赛PWL S2 FTD vs Inki 第二场 11.21
2020/11/24 DOTA
解析Python中的eval()、exec()及其相关函数
2017/12/20 Python
Python实现学校管理系统
2018/01/11 Python
Python编程二分法实现冒泡算法+快速排序代码示例
2018/01/15 Python
Python将图片转换为字符画的方法
2020/06/16 Python
Python使用docx模块实现刷题功能代码
2020/02/13 Python
Keras 快速解决OOM超内存的问题
2020/06/11 Python
Python Web项目Cherrypy使用方法镜像
2020/11/05 Python
移动端适配 使px自动转换rem
2019/08/26 HTML / CSS
计算机应用与科学个人的自我评价
2013/11/15 职场文书
专题组织生活会思想汇报
2014/10/01 职场文书