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中操作时间之getYear()方法的使用教程
Jun 11 Javascript
js面向对象之常见创建对象的几种方式(工厂模式、构造函数模式、原型模式)
Nov 09 Javascript
js实现div在页面拖动效果
May 04 Javascript
完美解决JS文件页面加载时的阻塞问题
Dec 18 Javascript
基于js的变量提升和函数提升(详解)
Sep 17 Javascript
解决layui上传文件提示上传异常,实际文件已经上传成功的问题
Aug 19 Javascript
webpack + vue 打包生成公共配置文件(域名) 方便动态修改
Aug 29 Javascript
Vue动态加载图片在跨域时无法显示的问题及解决方法
Mar 10 Javascript
Javascript执行流程细节原理解析
May 14 Javascript
如何使用jQuery操作Cookies方法解析
Sep 08 jQuery
详解ES6实现类的私有变量的几种写法
Feb 10 Javascript
JavaScript Dom实现轮播图原理和实例
Feb 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
asp和php下textarea提交大量数据发生丢失的解决方法
2008/01/20 PHP
需要使用php模板的朋友必看的很多个顶级PHP模板引擎比较分析
2008/05/26 PHP
深入file_get_contents函数抓取内容失败的原因分析
2013/06/25 PHP
PHP实现根据浏览器跳转不同语言页面代码
2013/08/02 PHP
php 字符串压缩方法比较示例
2014/01/23 PHP
PHP比你想象的好得多
2014/11/27 PHP
PHP多维数组转一维数组的简单实现方法
2015/12/23 PHP
php中如何执行linux命令详解
2018/11/06 PHP
4种Windows系统下Laravel框架的开发环境安装及部署方法详解
2020/04/06 PHP
JS俄罗斯方块,包含完整的设计理念
2010/12/11 Javascript
prettify 代码高亮着色器google出品
2010/12/28 Javascript
当jQuery遭遇CoffeeScript的时候 使用分享
2011/09/17 Javascript
jquery事件重复绑定的快速解决方法
2014/01/03 Javascript
js弹窗返回值详解(window.open方式)
2014/01/11 Javascript
JS不能跨域借助jquery获取IP地址的方法
2014/08/20 Javascript
详解js私有作用域中创建特权方法
2016/01/25 Javascript
JS 事件绑定、事件监听、事件委托详细介绍
2016/09/28 Javascript
JavaScript实现邮箱地址自动匹配功能代码
2016/11/28 Javascript
JS检测数组类型的方法小结
2017/03/14 Javascript
jsonp跨域获取数据的基础教程
2018/07/01 Javascript
利用weixin-java-miniapp生成小程序码并直接返回图片文件流的方法
2019/03/29 Javascript
jQuery实现input输入框获取焦点与失去焦点时提示的消失与显示功能示例
2019/05/27 jQuery
vue简单练习 桌面时钟的实现代码实例
2019/09/19 Javascript
vue实现一个矩形标记区域(rectangle marker)的方法
2020/10/28 Javascript
js实现鼠标拖曳效果
2020/12/30 Javascript
[02:44]2014DOTA2 国际邀请赛中国区预选赛 大神红毯秀
2014/05/25 DOTA
python3音乐播放器简单实现代码
2020/04/20 Python
独特的python循环语句
2016/11/20 Python
Python基于生成器迭代实现的八皇后问题示例
2018/05/23 Python
Django的用户模块与权限系统的示例代码
2019/07/24 Python
python中if嵌套命令实例讲解
2021/02/25 Python
Java如何格式化日期
2012/08/07 面试题
环境科学毕业生自荐信
2013/11/21 职场文书
面临毕业的毕业生自荐书范文
2014/02/05 职场文书
小学生检讨书大全
2014/02/06 职场文书
导游词之任弼时故居
2020/01/07 职场文书