原生javascript实现解析XML文档与字符串


Posted in Javascript onMarch 01, 2016

之前写过一篇 《使用jquery解析XML的方法》链接是https://3water.com/article/54842.htm,上篇文章详细解释了jQuery 与字符串互相转换的方法 ,这里着重论述javascript操作xml。

总代码如下:

var XMLHttp = null;
if (window.XMLHttpRequest) { //现代浏览器
  XMLHttp = new XMLHttpRequest();
} else if (window.ActiveXObject) {
  XMLHttp = new ActiveXObject("Microsoft.XMLHTTP"); //IE5/IE6
}
if (XMLHttp !== null) {
  XMLHttp.onreadystatechange = function() {
    if (XMLHttp.readyState === 4) {
      if (XMLHttp.status === 200 || XMLHttp.status === 304) {
        // var XMLDom = XMLHttp.responseXML; //解析XML文档
        var XMLDoc = XMLHttp.responseText; //解析XML字符串
        var XMLDom = (new DOMParser()).parseFromString(XMLDoc, "text/xml");
        //异步代码写这里
        console.log(XMLDom);
        console.log("world"); //后出现world
      }
    }
  };
  XMLHttp.open("get", "test1.xml", true);
  XMLHttp.send();
  //非异步代码写这里
  console.log("hello"); //先出现hello
}

第一步,创建XMLHTTPREQUEST:

var XMLHttp = null;
if (window.XMLHttpRequest) { //现代浏览器
  XMLHttp = new XMLHttpRequest();
} else if (window.ActiveXObject) {
  XMLHttp = new ActiveXObject("Microsoft.XMLHTTP"); //IE5/IE6
}

第二步,检测ONREADYSTATECHANGE(非异步不需要):

if (XMLHttp !== null) {
  XMLHttp.onreadystatechange = function() {
    if (XMLHttp.readyState === 4) {
      if (XMLHttp.status === 200 || XMLHttp.status === 304) {
        //异步代码写这里
      }
    }
  };
  XMLHttp.open("get", "test1.xml", true);
  XMLHttp.send();
  //非异步代码写这里
}

第三步,解析XML文档或字符串(异步):

XMLHttp.onreadystatechange = function() {
    if (XMLHttp.readyState === 4) {
      if (XMLHttp.status === 200 || XMLHttp.status === 304) {
        // var XMLDom = XMLHttp.responseXML; //解析XML文档
        var XMLDoc = XMLHttp.responseText; //解析XML字符串
        var XMLDom = (new DOMParser()).parseFromString(XMLDoc, "text/xml");
        //异步代码写这里
        console.log(XMLDom);
      }
    }
  };

第四步,解析XML文档或字符串(非异步):

if (XMLHttp !== null) {
  // XMLHttp.onreadystatechange = function() {
  //   if (XMLHttp.readyState === 4) {
  //     if (XMLHttp.status === 200 || XMLHttp.status === 304) {}
  //   }
  // };
  XMLHttp.open("get", "test1.xml", false);
  XMLHttp.send();
  //非异步代码写这里
  // var XMLDom = XMLHttp.responseXML; //解析XML文档
  var XMLDoc = XMLHttp.responseText; //解析XML字符串
  var XMLDom = (new DOMParser()).parseFromString(XMLDoc, "text/xml");
  //异步代码写这里
  console.log(XMLDom);
}
Javascript 相关文章推荐
IE6不能修改NAME问题的解决方法
Sep 03 Javascript
推荐11款jQuery开发的复选框和单选框美化插件
Aug 02 Javascript
JavaScript中exec函数用法实例分析
Jun 08 Javascript
深入理解JavaScript编程中的原型概念
Jun 25 Javascript
详解js图片轮播效果实现原理
Dec 17 Javascript
Ubuntu 16.04 64位中搭建Node.js开发环境教程
Oct 19 Javascript
js canvas仿支付宝芝麻信用分仪表盘
Nov 16 Javascript
layui获取选中行数据的实例讲解
Aug 19 Javascript
详解webpack编译速度提升之DllPlugin
Feb 05 Javascript
详解element-ui中form验证杂记
Mar 04 Javascript
关于layui 下拉列表的change事件详解
Sep 20 Javascript
Vue的全局过滤器和私有过滤器的实现
Apr 20 Javascript
JS创建对象几种不同方法详解
Mar 01 #Javascript
jQuery中通过ajax的get()函数读取页面的方法
Feb 29 #Javascript
基于JavaScript实现文字超出部分隐藏
Feb 29 #Javascript
基于JavaScript实现百叶窗动画效果不只单纯flas可以实现
Feb 29 #Javascript
ClearTimeout消除闪动实例代码
Feb 29 #Javascript
JavaScript实现点击按钮字体放大、缩小
Feb 29 #Javascript
jquery trigger函数执行两次的解决方法
Feb 29 #Javascript
You might like
基于curl数据采集之单页面并行采集函数get_htmls的使用
2013/04/28 PHP
php技术实现加载字体并保存成图片
2015/07/27 PHP
ThinkPHP框架搭建及常见问题(XAMPP安装失败、Apache/MySQL启动失败)
2016/04/15 PHP
PHP实现图片批量打包下载功能
2017/03/01 PHP
总结AJAX相关JS代码片段和浏览器模型
2007/08/15 Javascript
使弱类型的语言JavaScript变强势
2009/06/22 Javascript
Js四则运算函数代码
2012/07/21 Javascript
JQuery的AJAX实现文件下载的小例子
2013/05/15 Javascript
JSON+HTML实现国家省市联动选择效果
2014/05/18 Javascript
jQuery中:image选择器用法实例
2015/01/03 Javascript
JavaScript之DOM_动力节点Java学院整理
2017/07/03 Javascript
echarts饼图扇区添加点击事件的实例
2017/10/16 Javascript
nodejs 简单实现动态html的方法
2018/05/12 NodeJs
JS实现全屏预览F11功能的示例代码
2018/07/23 Javascript
vue中使用sessionStorage记住密码功能
2018/07/24 Javascript
小程序红包雨的实现示例
2019/02/19 Javascript
浅谈KOA2 Restful方式路由初探
2019/03/14 Javascript
JavaScript页面加载事件实例讲解
2019/09/01 Javascript
JS倒计时两种实现方式代码实例
2020/07/27 Javascript
详解vue之自行实现派发与广播(dispatch与broadcast)
2021/01/19 Vue.js
通过数据库向Django模型添加字段的示例
2015/07/21 Python
python抓取文件夹的所有文件
2018/02/27 Python
对Python subprocess.Popen子进程管道阻塞详解
2018/10/29 Python
python实现名片管理系统
2018/11/29 Python
对python 读取线的shp文件实例详解
2018/12/22 Python
Django1.11自带分页器paginator的使用方法
2019/10/31 Python
selenium+python实现自动登陆QQ邮箱并发送邮件功能
2019/12/13 Python
爱尔兰家电数码商城:Currys PC World爱尔兰
2016/07/23 全球购物
大整数数相乘的问题
2012/07/22 面试题
说一下Linux下有关用户和组管理的命令
2016/01/04 面试题
节水倡议书范文
2014/04/15 职场文书
妈妈别哭观后感
2015/06/08 职场文书
2015大学迎新标语
2015/07/16 职场文书
《自己的花是让别人看的》教学反思
2016/02/19 职场文书
python 破解加密zip文件的密码
2021/04/22 Python
python 解决微分方程的操作(数值解法)
2021/05/26 Python