原生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 相关文章推荐
通过修改referer下载文件的方法
May 11 Javascript
Javascript 二维数组
Nov 26 Javascript
JS下高效拼装字符串的几种方法比较与测试代码
Apr 15 Javascript
JS实现获取剪贴板内容的方法
Jun 21 Javascript
COM组件中调用JavaScript函数详解及实例
Feb 23 Javascript
jQuery使用unlock.js插件实现滑动解锁
Apr 04 jQuery
你可能不知道的JSON.stringify()详解
Aug 17 Javascript
js实现以最简单的方式将数组元素添加到对象中的方法
Dec 20 Javascript
jQuery实现的页面详情展开收起功能示例
Jun 11 jQuery
vue-cli 3.0 版本与3.0以下版本在搭建项目时的区别详解
Dec 11 Javascript
详解Webpack如何引入CDN链接来优化编译后的体积
Jun 21 Javascript
使用Vue Composition API写出清晰、可扩展的表单实现
Jun 10 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
基于PHP读取csv文件内容的详解
2013/06/18 PHP
禁止选中文字兼容IE、Chrome、FF等
2013/09/04 Javascript
jquery中的查找parents与closest方法之间的区别
2013/12/02 Javascript
javascript中文本框中输入法切换的问题
2013/12/10 Javascript
如何将php数组或者对象传递给javascript
2014/03/20 Javascript
chrome下jq width()方法取值为0的解决方法
2014/05/26 Javascript
用jquery修复在iframe下的页面锚点失效问题
2014/08/22 Javascript
JavaScript立即执行函数的三种不同写法
2014/09/05 Javascript
深入理解关于javascript中apply()和call()方法的区别
2016/04/12 Javascript
js检测离开或刷新页面时表单数据是否更改的方法
2016/08/02 Javascript
深入理解JavaScript 参数按值传递
2017/05/24 Javascript
jquery实现回车键触发事件(实例讲解)
2017/11/21 jQuery
基于JS实现简单滑块拼图游戏
2019/10/12 Javascript
JavaScript实现栈结构Stack过程详解
2020/03/07 Javascript
python使用urllib2实现发送带cookie的请求
2015/04/28 Python
Python自动化测试ConfigParser模块读写配置文件
2016/08/15 Python
Python设计模式之中介模式简单示例
2018/01/09 Python
pip命令无法使用的解决方法
2018/06/12 Python
Python编程在flask中模拟进行Restful的CRUD操作
2018/12/28 Python
Django中Middleware中的函数详解
2019/07/18 Python
使用Numpy对特征中的异常值进行替换及条件替换方式
2020/06/08 Python
详解利用python识别图片中的条码(pyzbar)及条码图片矫正和增强
2020/11/17 Python
使用纯 CSS 创作一个脉动 loader效果的源码
2018/09/28 HTML / CSS
世界上最大的乐器零售商:Guitar Center
2017/11/07 全球购物
营销与策划个人求职信
2013/09/22 职场文书
博士研究生自我鉴定范文
2013/12/04 职场文书
运动会广播稿60字
2014/01/15 职场文书
贷款担保书范文
2014/05/13 职场文书
学校安全生产月活动总结
2014/07/05 职场文书
防灾减灾日活动总结
2014/08/26 职场文书
2014年党小组工作总结
2014/12/20 职场文书
赢在中国观后感
2015/06/02 职场文书
MySQL update set 和 and的区别
2021/05/08 MySQL
使用php的mail()函数实现发送邮件功能
2021/06/03 PHP
html5 录制mp3音频支持采样率和比特率设置
2021/07/15 Javascript
Python pyecharts案例超市4年数据可视化分析
2022/08/14 Python