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 相关文章推荐
JXTree对象,读取外部xml文件数据,生成树的函数
Apr 02 Javascript
js 实现无缝滚动 兼容IE和FF
Jul 15 Javascript
jQuery学习笔记 获取jQuery对象
Sep 19 Javascript
JavaScript插件化开发教程 (三)
Jan 27 Javascript
全面解析Bootstrap图片轮播效果
Dec 03 Javascript
用jQuery实现圆点图片轮播效果
Mar 19 Javascript
整理关于Bootstrap列表组的慕课笔记
Mar 29 Javascript
bootstrap弹出层的多种触发方式
May 10 Javascript
JS实现深度优先搜索求解两点间最短路径
Jan 17 Javascript
使用localStorage替代cookie做本地存储
Sep 25 Javascript
three.js利用卷积法如何实现物体描边效果
Nov 27 Javascript
利用js实现简易红绿灯
Oct 15 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
检查url链接是否已经有参数的php代码 添加 ? 或 &amp;
2010/02/09 PHP
Base64在线编码解码实现代码 演示与下载
2011/01/08 PHP
thinkPHP中验证码的简单实现方法
2016/12/05 PHP
完美解决在ThinkPHP控制器中命名空间的问题
2017/05/05 PHP
Laravel Eloquent ORM 实现查询表中指定的字段
2019/10/17 PHP
php 使用html5 XHR2实现上传文件与进度显示功能示例
2020/03/03 PHP
Javascript实现的鼠标经过时播放声音
2010/05/18 Javascript
基于jquery实现的鼠标滑过按钮改变背景图片
2011/07/15 Javascript
JQuery文字列表向上滚动的代码
2013/11/13 Javascript
浅析jQuery EasyUI中的tree使用指南
2014/12/18 Javascript
JavaScript获取当前cpu使用率的方法
2015/12/15 Javascript
js+flash实现的5图变换效果广告代码(附演示与demo源码下载)
2016/04/01 Javascript
无需 Flash 使用 jQuery 复制文字到剪贴板
2016/04/26 Javascript
Bootstrap中文本框的宽度变窄并且加入一副验证码图片的实现方法
2016/06/23 Javascript
JavaScript中ES6字符串扩展方法
2016/08/26 Javascript
微信小程序左滑删除效果的实现代码
2017/02/20 Javascript
详解Vue.js基于$.ajax获取数据并与组件的data绑定
2017/05/26 Javascript
使用cropper.js裁剪头像的实例代码
2017/09/29 Javascript
Vue实现点击按钮复制文本内容的例子
2019/11/09 Javascript
你可能从未使用过的11+个JavaScript特性(小结)
2020/01/08 Javascript
js实现弹窗效果
2020/08/09 Javascript
element-plus一个vue3.xUI框架(element-ui的3.x 版初体验)
2020/12/02 Vue.js
python安装教程 Pycharm安装详细教程
2017/05/02 Python
Python+Selenium+PIL+Tesseract自动识别验证码进行一键登录
2017/09/20 Python
单利模式及python实现方式详解
2018/03/20 Python
Python实现爬虫设置代理IP和伪装成浏览器的方法分享
2018/05/07 Python
python3 小数位的四舍五入(用两种方法解决round 遇5不进)
2019/04/11 Python
解决python打开https出现certificate verify failed的问题
2020/09/03 Python
澳大利亚在线高跟鞋商店:Shoe Me
2019/11/19 全球购物
合同专员岗位职责
2013/12/18 职场文书
高级编程求职信模板
2014/02/16 职场文书
廉洁自律演讲稿
2014/05/22 职场文书
机关党员进社区活动总结
2014/07/05 职场文书
专题组织生活会思想汇报
2014/10/01 职场文书
2014年节能减排工作总结
2014/12/06 职场文书
Python Django模型详解
2021/10/05 Python