博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JavaScript 【 IE中的XML DOM 】
阅读量:5163 次
发布时间:2019-06-13

本文共 2833 字,大约阅读时间需要 9 分钟。

IE中的 XML DOM

在统一的正式规范出来以前,浏览器对于XML的解决方案各不相同。DOM2级提出了动态创建XML DOM规范,DOM3进一步增强了XML DOM。所以,在不同的浏览器实现XML的处理是一件比较麻烦的事情。

 

一、创建XMLDOM对象

 var xmlDom = new ActiveXObject('MSXML2.DOMDocument');

 微软的三种版本:

1.MSXML2.DOMDocument.6.0 最可靠最新的版本

2.MSXML2.DOMDocument.3.0 兼容性较好的版本

3.MSXML2.DOMDocument    仅针对IE5.5之前的版本

 

这三个版本在不同的windows平台和浏览器下会有不同的支持,那么为了实现兼容,我们应该考虑这样操作:

6.0->3.0->备用版本这条路线进行实现,如下:

 

  function createXMLDOM() {      var version = [                              'MSXML2.DOMDocument.6.0',                              'MSXML2.DOMDocument.3.0',                              'MSXML2.DOMDocument'      ];      for (var i = 0; i < version.length; i ++) {          try {              var xmlDom = new ActiveXObject(version[i]);              return xmlDom;          } catch (e) {              //跳过          }      }      throw new Error('您的系统或浏览器不支持MSXML!');        //循环后抛出错误  }
View Code

 

二、载入XML,使用loadXML()load()这两个方法可以分别载入XML字符串或XML文件:

1、

xmlDom.loadXML('<root version="1.0"><user>Lee</user></root>');

 

alert(xmlDom.xml);

2、

xmlDom.load('test.xml'); //载入一个XML文件

alert(xmlDom.xml);  //将其序列化

 

三、当你已经可以加载了XML,那么你就可以用之前学习的DOM来获取XML数据,比如标签内的某个文本。

1、

var user = xmlDom.getElementsByTagName('user')[0]; //获取<user>节点

alert(user.tagName); //获取<user>元素标签

alert(user.firstChild.nodeValue); //获取<user>里的值Lee

 2、

DOM不单单可以获取XML节点,也可以创建。

var email= xmlDom.createElement('email');

xmlDom.documentElement.appendChild(email);

 

 

 

 

学习笔记

 

 

四、同步和异步

/*//默认使用的异步加载var xmlDom = createXMLDOM();xmlDom.load('demo.xml');alert(xmlDom.xml);//PS:在服务器端,默认使用的是异步加载。//两个原因:1.在服务器端,使用的异步加载,load()还没有加载完毕,就去打印xmlDom.xml序列化的字符串//使用同步加载var xmlDom = createXMLDOM();xmlDom.async = false;                        //同步设置false,异步设置true,默认是异步xmlDom.load('demo.xml');alert(xmlDom.xml);//使用同步记载延迟的PHP文件var xmlDom = createXMLDOM();xmlDom.async = false;                        //同步设置false,异步设置true,默认是异步xmlDom.load('demo.php');                //加载这个PHP文件,使用了5秒,并且后面的代码没有执行alert(xmlDom.xml);                            //5秒后才执行的//PS:使用同步加载,如果延迟,那么整个浏览器就假死了。*///我们应该用异步var xmlDom = createXMLDOM();xmlDom.async = true;                        //同步设置false,异步设置true,默认是异步xmlDom.onreadystatechange = function () {        //这个事件必须放在load()方法前面,意图先载入事件,再当load()执行的似乎才能激活    //alert(xmlDom);    if (xmlDom.readyState == 4) {    //xmlDom.parseError.errorCode  错误代号,没有错误是返回0        if (xmlDom.parseError.errorCode == 0) {            //alert(this === xmlDom);                //this执行的是window            alert(xmlDom.xml);        } else {            throw new Error('错误行号:' + xmlDom.parseError.line +                                          '\n错误代号:' + xmlDom.parseError.errorCode +                                         '\n错误解释:' + xmlDom.parseError.reason);        }    }}xmlDom.load('demo.xml');                //onreadystatechange比较特殊,里面的this表示 window而不是执行的object

 

 

 

 

 

转载于:https://www.cnblogs.com/cpugege/p/3425527.html

你可能感兴趣的文章
Hive(7)-基本查询语句
查看>>
注意java的对象引用
查看>>
C++ 面向对象 类成员函数this指针
查看>>
NSPredicate的使用,超级强大
查看>>
自动分割mp3等音频视频文件的脚本
查看>>
判断字符串是否为空的注意事项
查看>>
布兰诗歌
查看>>
js编码
查看>>
Pycharm Error loading package list:Status: 403错误解决方法
查看>>
steps/train_sat.sh
查看>>
转:Linux设备树(Device Tree)机制
查看>>
iOS 组件化
查看>>
(转)Tomcat 8 安装和配置、优化
查看>>
(转)Linxu磁盘体系知识介绍及磁盘介绍
查看>>
tkinter布局
查看>>
命令ord
查看>>
Sharepoint 2013搜索服务配置总结(实战)
查看>>
博客盈利请先考虑这七点
查看>>
使用 XMLBeans 进行编程
查看>>
写接口请求类型为get或post的时,参数定义的几种方式,如何用注解(原创)--雷锋...
查看>>