原生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 相关文章推荐
基于jquery的滚动新闻列表
Jun 19 Javascript
javascript顺序加载图片的方法
Jul 18 Javascript
JavaScript Split()方法
Dec 18 Javascript
jQuery中get方法用法分析
Dec 07 Javascript
node.js发送邮件email的方法详解
Jan 06 Javascript
原生js实现焦点轮播图效果
Jan 12 Javascript
Angular 作用域scope的具体使用
Dec 11 Javascript
vue App.vue中的公共组件改变值触发其他组件或.vue页面监听
May 31 Javascript
微信小程序下拉框搜索功能的实现方法
Jul 31 Javascript
node.js中process进程的概念和child_process子进程模块的使用方法示例
Feb 11 Javascript
Nuxt.js的路由跳转操作(页面跳转nuxt-link)
Nov 06 Javascript
vue登录页实现使用cookie记住7天密码功能的方法
Feb 18 Vue.js
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
[原创]效率较高的php下读取文本文件的代码
2008/07/02 PHP
php date与gmdate的获取日期的区别
2010/02/08 PHP
php array_unique之后json_encode需要注意
2011/01/02 PHP
PHP得到某段时间区间的时间戳 php定时任务
2012/04/12 PHP
php判断ip黑名单程序代码实例
2014/02/24 PHP
PHP微信红包API接口
2015/12/05 PHP
Javascript 文件夹选择框的两种解决方案
2009/07/01 Javascript
Javascript 判断Flash是否加载完成的代码
2010/04/12 Javascript
关于jQuery UI 使用心得及技巧
2012/10/10 Javascript
Javascript递归打印Document层次关系实例分析
2015/05/15 Javascript
浅谈setTimeout 与 setInterval
2015/06/23 Javascript
JS中使用 after 伪类清除浮动实例
2017/03/01 Javascript
浅谈Node Inspector 代理实现
2017/10/19 Javascript
微信小程序的mpvue框架快速上手指南
2019/05/15 Javascript
小程序如何支持使用 async/await详解
2019/09/12 Javascript
vue-simple-uploader上传成功之后的response获取代码
2020/09/07 Javascript
[38:32]完美世界DOTA2联赛循环赛 Forest vs DM 第二场 11.06
2020/11/06 DOTA
关于Python作用域自学总结
2019/06/10 Python
django框架面向对象ORM模型继承用法实例分析
2019/07/29 Python
Python爬虫学习之翻译小程序
2019/07/30 Python
python使用ctypes调用扩展模块的实例方法
2020/01/28 Python
python 通过邮件控制实现远程控制电脑操作
2020/03/16 Python
python/golang实现循环链表的示例代码
2020/09/14 Python
英国领先的NHS批准的在线药店:Pharmacy2U
2017/01/06 全球购物
英国家用电器折扣网站:Electrical Discount UK
2018/09/17 全球购物
Etam俄罗斯:法国女士内衣和家居服网上商店
2019/10/30 全球购物
上班早退检讨书
2014/01/09 职场文书
初中校园之声广播稿
2014/01/15 职场文书
中国文明网签名寄语
2014/01/18 职场文书
《忆江南》教学反思
2014/04/07 职场文书
小学校长先进事迹材料
2014/05/13 职场文书
服装设计专业求职信
2014/06/16 职场文书
代理人委托书
2014/09/16 职场文书
机关职员工作检讨书
2014/10/23 职场文书
酒店工程部的岗位职责汇总大全
2019/10/23 职场文书
idea下配置tomcat避坑详解
2022/04/12 Servers