原生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 相关文章推荐
JavaScript中的Location地址对象
Jan 16 Javascript
JavaScript 学习笔记(四)
Dec 31 Javascript
jquery 日期分离成年月日的代码
May 14 Javascript
editable.js 基于jquery的表格的编辑插件
Oct 24 Javascript
jquery插件制作 手风琴Panel效果实现
Aug 17 Javascript
jquery动态改变onclick属性导致失效的问题解决方法
Dec 04 Javascript
使用HTML5+Boostrap打造简单的音乐播放器
Aug 05 Javascript
Vue.js组件tab实现选项卡切换
Mar 23 Javascript
node.js-v6新版安装具体步骤(分享)
Sep 06 Javascript
jQuery实现checkbox全选功能完整实例
Jul 12 jQuery
深入理解JS中Number(),parseInt(),parseFloat()三者比较
Aug 24 Javascript
使用原生js编写一个简单的框选功能方法
May 13 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中addslashes()和stripslashes()实现字符串转义和还原用法实例
2016/01/07 PHP
PHP匿名函数和use子句用法实例
2016/03/16 PHP
微信支付的开发流程详解
2016/09/13 PHP
javascript Select标记中options操作方法集合
2008/10/22 Javascript
浅析jQuery的链式调用之each函数
2010/12/03 Javascript
JavaScript高级程序设计 阅读笔记(十八) js跨平台的事件
2012/08/14 Javascript
Js-$.extend扩展方法使方法参数更灵活
2013/01/15 Javascript
JS命名空间的另一种实现
2013/08/09 Javascript
javascript实时显示北京时间的方法
2015/03/12 Javascript
移动端JQ插件hammer使用详解
2015/07/03 Javascript
基于jquery实现下拉框美化特效
2016/02/02 Javascript
Angularjs过滤器使用详解
2016/05/25 Javascript
vue高德地图之玩转周边
2017/06/16 Javascript
JS实现加载时锁定HTML页面元素的方法
2017/06/24 Javascript
Vue2.0 组件传值通讯的示例代码
2017/08/01 Javascript
jQuery初级教程之网站品牌列表效果
2017/08/02 jQuery
nodejs 递归拷贝、读取目录下所有文件和目录
2019/07/18 NodeJs
JavaScript实现下拉列表
2021/01/20 Javascript
python多线程用法实例详解
2015/01/15 Python
python使用os.listdir和os.walk获得文件的路径的方法
2017/12/16 Python
python2.7实现爬虫网页数据
2018/05/25 Python
python库lxml在linux和WIN系统下的安装
2018/06/24 Python
python使用turtle绘制国际象棋棋盘
2019/05/23 Python
利用Python小工具实现3秒钟将视频转换为音频
2019/10/29 Python
python继承threading.Thread实现有返回值的子类实例
2020/05/02 Python
Python 数据的累加与统计的示例代码
2020/08/03 Python
python解包概念及实例
2021/02/17 Python
Foot Locker加拿大官网:美国知名运动产品零售商
2019/07/21 全球购物
XML文档定义有几种形式?它们之间有何本质区别?解析XML文档有哪几种方式?
2016/01/12 面试题
《月光启蒙》教学反思
2014/03/01 职场文书
班级标语大全
2014/06/21 职场文书
早读课迟到检讨书
2014/09/25 职场文书
英文导游词
2015/02/13 职场文书
2015年读书月活动总结
2015/03/26 职场文书
西安事变观后感
2015/06/12 职场文书
2015年教师节主持词
2015/07/03 职场文书