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 相关文章推荐
通过隐藏option实现select的联动效果
Nov 10 Javascript
javaScript call 函数的用法说明
Apr 09 Javascript
jQuery jqgrid 对含特殊字符json 数据的 Java 处理方法
Jan 01 Javascript
如何利用Promises编写更优雅的JavaScript代码
May 17 Javascript
easyui-combobox 实现简单的自动补全功能示例
Nov 08 Javascript
javascript 定时器工作原理分析
Dec 03 Javascript
vue-router中的hash和history两种模式的区别
Jul 17 Javascript
jQuery AJAX 方法success()后台传来的4种数据详解
Aug 08 jQuery
javascript移动端 电子书 翻页效果实现代码
Sep 07 Javascript
Layui数据表格之单元格编辑方式
Oct 26 Javascript
9种方法优化jQuery代码详解
Feb 04 jQuery
你不知道的 TypeScript 高级类型(小结)
Aug 28 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
第三章 php操作符与控制结构代码
2011/12/30 PHP
PHP __autoload函数(自动载入类文件)的使用方法
2012/02/04 PHP
WordPress中登陆后关闭登陆页面及设置用户不可见栏目
2015/12/31 PHP
Zend Framework连接Mysql数据库实例分析
2016/03/19 PHP
encode脚本和normal脚本混用的问题与解决方法
2007/03/08 Javascript
js正确获取元素样式详解
2009/08/07 Javascript
multiSteps 基于Jquery的多步骤滑动切换插件
2011/07/22 Javascript
javascript的propertyIsEnumerable()方法使用介绍
2014/04/09 Javascript
JavaScript中对象property的删除方法介绍
2014/12/30 Javascript
用JavaScript实现PHP的urlencode与urldecode函数
2015/08/13 Javascript
jQuery validate插件submitHandler提交导致死循环解决方法
2016/01/21 Javascript
JS组件Bootstrap Table使用实例分享
2016/05/30 Javascript
封装获取dom元素的简单实例
2016/07/08 Javascript
Bootstrap的Refresh Icon也spin起来
2016/07/13 Javascript
详解Javascript数据类型的转换规则
2016/12/12 Javascript
[js高手之路]单例模式实现模态框的示例
2017/09/01 Javascript
vue与TypeScript集成配置最简教程(推荐)
2017/10/17 Javascript
vue-cli webpack 引入jquery的方法
2018/01/10 jQuery
详解plotly.js 绘图库入门使用教程
2018/02/23 Javascript
element-ui 表格实现单元格可编辑的示例
2018/02/26 Javascript
nodejs 日志模块winston的使用方法
2018/05/02 NodeJs
Angular中的ng-template及angular 使用ngTemplateOutlet 指令的方法
2018/08/08 Javascript
微信小程序实现多选功能
2018/11/04 Javascript
vue iview 隐藏Table组件里的某一列操作
2020/11/13 Javascript
python中实现定制类的特殊方法总结
2014/09/28 Python
简要讲解Python编程中线程的创建与锁的使用
2016/02/28 Python
Python中使用platform模块获取系统信息的用法教程
2016/07/08 Python
python @property的用法及含义全面解析
2018/02/01 Python
python中协程实现TCP连接的实例分析
2018/10/14 Python
python爬虫爬取某网站视频的示例代码
2021/02/20 Python
本科毕业生自荐信
2014/05/26 职场文书
2014教师党员个人自我评议
2014/09/20 职场文书
2014年实验室工作总结
2014/12/03 职场文书
自主招生推荐信格式模板
2015/03/24 职场文书
2015年人民调解工作总结
2015/05/18 职场文书
win10安装配置nginx的过程
2021/03/31 Servers