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 日期时间函数(经典+完善+实用)
May 27 Javascript
CheckBoxList多选样式jquery、C#获取选择项
Sep 06 Javascript
让JavaScript和其它资源并发下载的方法
Oct 16 Javascript
jquery中post方法用法实例
Oct 21 Javascript
JS实现下拉菜单赋值到文本框的方法
Aug 18 Javascript
JavaScript人脸识别技术及脸部识别JavaScript类库Tracking.js
Sep 14 Javascript
js 创建对象 经典模式全面了解
Aug 16 Javascript
jQuery搜索框效果实现代码(百度关键词联想)
Feb 25 Javascript
layer弹出层全屏及关闭方法
Aug 17 Javascript
使用weixin-java-tools完成微信授权登录、微信支付的示例
Sep 26 Javascript
从零开始实现Vue简单的Toast插件
Dec 03 Javascript
微信小程序实现弹幕墙(祝福墙)
Nov 18 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
PL-880隐藏功能
2021/03/01 无线电
将PHP作为Shell脚本语言使用
2006/10/09 PHP
php安装xdebug/php安装pear/phpunit详解步骤(图)
2013/12/22 PHP
PHP下载远程图片并保存到本地方法总结
2016/01/22 PHP
php简单截取字符串代码示例
2016/10/19 PHP
jQuery的运行机制和设计理念分析
2011/04/05 Javascript
jQuery回车实现登录简单实现
2013/08/20 Javascript
js数组的基本用法及数组根据下标(数值或字符)移除元素
2013/10/20 Javascript
jQuery实现字符串按指定长度加入特定内容的方法
2015/03/11 Javascript
快速掌握Node.js模块封装及使用
2016/03/21 Javascript
BootStrap学习系列之Bootstrap Typeahead 组件实现百度下拉效果(续)
2016/07/07 Javascript
springMVC结合AjaxForm上传文件
2016/07/12 Javascript
Angular2中Bootstrap界面库ng-bootstrap详解
2016/10/18 Javascript
Layui table 组件的使用之初始化加载数据、数据刷新表格、传参数
2017/09/11 Javascript
在 React、Vue项目中使用SVG的方法
2018/02/09 Javascript
小程序云开发实战小结
2018/10/25 Javascript
vue+elementUI 复杂表单的验证、数据提交方案问题
2019/06/24 Javascript
利用node.js开发cli的完整步骤
2020/12/29 Javascript
python使用7z解压apk包的方法
2015/04/18 Python
python Tkinter版学生管理系统
2019/02/20 Python
python Django中models进行模糊查询的示例
2019/07/18 Python
详解python 中in 的 用法
2019/12/12 Python
基于Python 中函数的 收集参数 机制
2019/12/21 Python
Python数据相关系数矩阵和热力图轻松实现教程
2020/06/16 Python
Python爬虫实例——scrapy框架爬取拉勾网招聘信息
2020/07/14 Python
如何使用Pytorch搭建模型
2020/10/26 Python
如何用 Python 制作 GitHub 消息助手
2021/02/20 Python
CSS3 中的@keyframes介绍
2014/09/02 HTML / CSS
澳大利亚床上用品、浴巾和家居用品购物网站:Bambury
2020/04/16 全球购物
人事专员岗位职责
2013/11/20 职场文书
副总经理任命书
2014/06/05 职场文书
干部作风建设个人剖析材料
2014/10/11 职场文书
学校领导班子成员查摆问题及整改措施
2014/10/28 职场文书
实习指导教师评语
2014/12/30 职场文书
使用JS前端技术实现静态图片局部流动效果
2022/08/05 Javascript
Golang Web 框架Iris安装部署
2022/08/14 Python