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时区函数介绍
Sep 14 Javascript
javascript页面上使用动态时间具体实现
Mar 18 Javascript
JavaScript跨平台的开源框架NativeScript
Mar 24 Javascript
Javascript实现div的toggle效果实例分析
Jun 09 Javascript
解决JavaScript数字精度丢失问题的方法
Dec 03 Javascript
js中小数向上取整数,向下取整数,四舍五入取整数的实现(必看篇)
Feb 13 Javascript
原生js实现放大镜
Feb 20 Javascript
微信小程序使用wxParse解析html的方法教程
Jul 06 Javascript
Vue 路由切换时页面内容没有重新加载的解决方法
Sep 01 Javascript
layui lay-verify form表单自定义验证规则详解
Sep 18 Javascript
vue+iview实现分页及查询功能
Nov 17 Vue.js
正则表达式基础与常用验证表达式
Jun 16 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
天使彦史上最神还原,性别曝光的那一刻,百万网友恋爱了
2020/03/02 国漫
PHP5.3.1 不再支持ISAPI
2010/01/08 PHP
PHP中PDO基础教程 入门级
2011/09/04 PHP
php中通过curl smtp发送邮件
2012/06/05 PHP
PHP函数getenv简介和使用实例
2014/05/12 PHP
PHP MSSQL 分页实例
2016/04/13 PHP
自定义Laravel (monolog)日志位置,并增加请求ID的实现
2019/10/17 PHP
pjblog中的UBBCode.js
2007/04/25 Javascript
javascript 表格内容排序 简单操作示例代码
2014/01/03 Javascript
js+ajax实现获取文件大小的方法
2015/12/08 Javascript
JS组件Bootstrap Select2使用方法详解
2020/04/17 Javascript
简单谈谈json跨域
2016/03/13 Javascript
easyui validatebox验证
2016/04/29 Javascript
在vue项目中使用element-ui的Upload上传组件的示例
2018/02/08 Javascript
js装饰设计模式学习心得
2018/02/17 Javascript
JS简易计算器实例讲解
2020/06/30 Javascript
vue-以文件流-blob-的形式-下载-导出文件操作
2020/08/07 Javascript
[36:05]DOTA2亚洲邀请赛 3.31 小组赛 A组 Liquid vs Optic
2018/04/01 DOTA
使用Python生成XML的方法实例
2017/03/21 Python
Python实现简单的获取图片爬虫功能示例
2017/07/12 Python
Python日期的加减等操作的示例
2017/08/15 Python
python 反向输出字符串的方法
2018/07/16 Python
Python WSGI的深入理解
2018/08/01 Python
浅谈解除装饰器作用(python3新增)
2018/10/15 Python
Django框架登录加上验证码校验实现验证功能示例
2019/05/23 Python
python在openstreetmap地图上绘制路线图的实现
2019/07/11 Python
利用Python代码实现一键抠背景功能
2019/12/29 Python
python 爬虫如何实现百度翻译
2020/11/16 Python
应届毕业生求职信
2013/11/30 职场文书
校长先进事迹材料
2014/02/01 职场文书
辩论赛主持词
2014/03/18 职场文书
艺术学院毕业生自荐信
2014/07/05 职场文书
合作协议书范文
2014/08/20 职场文书
债务纠纷委托书
2014/08/30 职场文书
装配出错检讨书
2014/09/23 职场文书
使用Python拟合函数曲线
2022/04/14 Python