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 = ; i < version.length; i ++) {
   try {
   var xmlDom = new ActiveXObject(version[i]);
   return xmlDom;
   } catch (e) {
   //跳过
   }
   }
   throw new Error('您的系统或浏览器不支持MSXML!'); //循环后抛出错误
  }

二、载入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);

<script type="text/javascript">

        function createXMLDOM() {
var version = [
"MSXML2.DOMDocument6.0",
"MSXML2.DOMDocument3.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库"); } var xmlDom = createXMLDOM();
// xmlDom.loadXML("<root><user>cpu</user></root>");//加载XML字符串
// alert(xmlDom.xml); //序列化XML,打印字符串 xmlDom.load("abc.xml");
var user = xmlDom.getElementsByTagName("user")[0];
// alert(user.nodeType); var bbb = xmlDom.createElement('bbb');
var root = xmlDom.documentElement;
root.appendChild(bbb);
var bbbText = xmlDom.createTextNode('kkk');
bbb.appendChild(bbbText);
alert(xmlDom.xml); </script>

学习笔记

四、同步和异步

/*
//默认使用的异步加载
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

JavaScript 【 IE中的XML DOM 】的更多相关文章

  1. Javascript 解析字符串生成 XML DOM 对象。

    Javascript 接收字符串生成 XML DOM 对象.实测对 Firefox .IE6 有效.可用于解析 ajax 的服务器响应结果,也可用于解析自定义字符串.​1. [代码]函数   ppt模 ...

  2. php中的XML DOM(10)

    1.PHP DOM (1) Php中的DOM跟javascript不一样,属性不用另外增加一个节点 2.主要类 DOMDocument :文档类 DOMNodeList :节点列表类 DOMNode ...

  3. php中的XML DOM(11)

    7.创建节点 在dom操作中,增删改操作必须要找父节点 1.DOMElement DOMDocument::createElement ( string $name [, string $value ...

  4. javascript快速入门25--浏览器中的XML

    打开XML 首先,直接从浏览器中打开XML文件,浏览器会对其进行格式良好性检查,如果不符合XML语法规范则显示出错,如果格式良好,再检查是否包含样式表(CSS或XSL),如果包含样式表,则用样式表格式 ...

  5. 【译】用jQuery 处理XML--浏览器中的XML与JavaScript

    用jQuery 处理XML--写在前面的话 用jQuery 处理XML-- DOM(文本对象模型)简介 用jQuery 处理XML--浏览器中的XML与JavaScript 用jQuery 处理XML ...

  6. 浏览器中的XML与JavaScript

    浏览器中的XML与JavaScript 在处理XML前,你需要在JavaScript中获取它.这一部分展示了一些不同的方法用来在JavaScript中获取XML并且对它进行处理. XML的节点类型 在 ...

  7. javascript中的XML

    IE下创建DOM并载入XML var xmldoc = new ActiveXObject("Microsoft.XMLDOM"); xmldoc.load(url); //载入X ...

  8. javascript随机将第一个dom中的图片添加到第二个div中去

    javascript随机将第一个dom中的图片添加到第二个div中去,此代码的是一个简单的例子,将第一个div中的五张图片中,提取随机两张显示到第二个div中. <!DOCTYPE html P ...

  9. DOM和SAX是应用中操纵XML文档的差别

    查看原文:http://www.ibloger.net/article/205.html DOM和SAX是应用中操纵XML文档的两种主要API.它们分别解释例如以下:          DOM.即Do ...

随机推荐

  1. [转]Traceroute网络排障实用指南(1)

    注:本文是同事的大作,虽是翻译的一篇英文PPT,但内容实在精彩,小小的Traceroute竟包含如此大的信息量,真是让人感慨!内容不涉及公司机密,所以一直想转到自己的Blog上来,自己需要时可以再翻阅 ...

  2. atitit.导出excel的设计----查询结果 导出为excel的实现java .net php 总结

    atitit.导出excel的设计----查询结果 导出为excel的实现java .net php 总结 1. 基本的流程 查询获得list 读取jsp的table获得标题and 字段的map to ...

  3. B. Sereja and Mirroring

    B. Sereja and Mirroring time limit per test 1 second memory limit per test 256 megabytes input stand ...

  4. python中的tab补全功能添加

    用Python时没有tab补全还是挺痛苦的,记录一下添加该功能的方法利人利己 1. 先准备一个tab.py的脚本 shell> cat tab.py #!/usr/bin/python # py ...

  5. 【计算几何初步-凸包-Graham扫描法-极角序】【HDU1348】 WALL

    Wall Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submi ...

  6. diffuse linux 文件比对工具

    linux下比较好用的可视化文件比对工具

  7. C++ 常见容器

    迭代器. 基本介绍(来源于网络):迭代器是一种抽象的概念.能够遍历容器内的 部分/全部 元素.每个迭代器中包含着元素的地址.  它可以将 抽象容器 和 泛型算法 结合起来.   大致原理: 1)迭代器 ...

  8. Spring MVC一个方法适用多种调用方式

    web.xml spring-mvc.xml <mvc:annotation-driven /> <context:component-scan base-package=" ...

  9. HTML5图形绘制学习(1)-- Canvas 元素简介

    Canvas元素是HTML5中新增的一个专门用来进行图形绘制的元素.和其名称Canvas一样,它就相当于一个画布,我们可以在其上描绘各种图形. 这里所说的绘制图型,不是指我们可以进行可视化的图形绘制, ...

  10. linux操作系统下的码农常用工具

    IDE: Pycharm PHPStorm Zend Studio 文本编辑器: VIM Sublime Text 版本管理: svn RapidSVN git git ui 文件对比: Meld D ...