原生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 相关文章推荐
向fckeditor编辑器插入指定代码的方法
May 25 Javascript
海量经典的jQuery插件集合
Jan 12 Javascript
jQuery中odd选择器的定义和用法
Dec 23 Javascript
浅谈EasyUi ComBotree树修改 父节点选择的问题
Nov 07 Javascript
浅谈Javascript事件对象
Feb 05 Javascript
vue删除html内容的标签样式实例
Sep 13 Javascript
vue的过滤器filter实例详解
Sep 17 Javascript
深入理解Vue.js轻量高效的前端组件化方案
Dec 10 Javascript
vue设置导航栏、侧边栏为公共页面的例子
Nov 01 Javascript
vue如何使用async、await实现同步请求
Dec 09 Javascript
JavaScript实现多层颜色选项卡嵌套
Sep 21 Javascript
js canvas实现五子棋小游戏
Jan 22 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
Laravel最佳分割路由文件(routes.php)的方式
2016/08/04 PHP
php表单习惯用的正则表达式
2017/10/11 PHP
php 函数中静态变量使用的问题实例分析
2020/03/05 PHP
PHP队列场景以及实现代码实例详解
2021/02/26 PHP
JS+CSS 制作的超级简单的下拉菜单附图
2013/11/22 Javascript
鼠标移到div,浮层显示明细,弹出层与div的上边距左边距重合(示例代码)
2013/12/14 Javascript
jquery对元素拖动排序示例
2014/01/16 Javascript
jquery控制表单输入框显示默认值的方法
2015/05/22 Javascript
javascript中一些util方法汇总
2015/06/10 Javascript
用JS生成UUID的方法实例
2016/03/30 Javascript
JavaScript闭包实例详解
2016/06/03 Javascript
JS实现探测网站链接的方法【测试可用】
2016/11/08 Javascript
原生JS+HTML5实现的可调节写字板功能示例
2018/08/30 Javascript
python写的ARP攻击代码实例
2014/06/04 Python
python中的内置函数getattr()介绍及示例
2014/07/20 Python
python中Pycharm 输出中文或打印中文乱码现象的解决办法
2017/06/16 Python
python+mongodb数据抓取详细介绍
2017/10/25 Python
python查看模块安装位置的方法
2018/10/16 Python
解决python opencv无法显示图片的问题
2018/10/28 Python
python 根据列表批量下载网易云音乐的免费音乐
2020/12/03 Python
使用CSS3的rem属性制作响应式页面布局的要点解析
2016/05/24 HTML / CSS
html5本地存储_动力节点Java学院整理
2017/07/12 HTML / CSS
Html5与App的通讯方式详解
2019/10/24 HTML / CSS
捷克电器和DJ设备网上商店:Electronic-star
2017/07/18 全球购物
英国领先的酒杯和水晶玻璃器皿制造商:Dartington Crystal
2019/06/23 全球购物
男方父母证婚词
2014/01/12 职场文书
中介公司区域经理岗位职责范本
2014/03/02 职场文书
小学端午节活动方案
2014/03/13 职场文书
《火烧云》教学反思
2014/04/12 职场文书
新农村建设标语
2014/06/24 职场文书
生活部的活动方案
2014/08/19 职场文书
英文导游词
2015/02/13 职场文书
《检阅》教学反思
2016/02/22 职场文书
Appium中scroll和drag_and_drop根据元素位置滑动
2022/02/15 Python
Java实现经典游戏泡泡堂的示例代码
2022/04/04 Java/Android
nginx实现多geoserver服务的负载均衡
2022/05/15 Servers