一、IE中的XML(IE低版本才支持)

在统一的正式规范出来以前,浏览器对于 XML 的解决方案各不相同。DOM2 级提出了动态创建 XML DOM 规范,DOM3 进一步增强了 XML DOM。

所以,在不同的浏览器实现XML 的处理是一件比较麻烦的事情。

1.创建 XMLDOM 对象
IE 浏览器是第一个原生支持 XML 的浏览器,而它是通过 ActiveX 对象实现的。这个对象,只有 IE 有,一般是 IE9 之前采用。

微软当年为了开发人员方便的处理 XML,创建了MSXML 库,但却没有让 Web 开发人员通过浏览器访问相同的对象。

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!'); //循环后抛出错误
}
var xmlDom = createXMLDOM();
alert(xmlDom);

2.载入 XML

如果已经获取了 XMLDOM 对象,那么可以使用 loadXML()和 load()这两个方法可以分别载入 XML 字符串或 XML 文件。

载入 XML 字符串:

    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!'); //循环后抛出错误
}
var xmlDom = createXMLDOM();
xmlDom.loadXML('<root version="1.0"><user>Lee</user></root>');//载入XML字符串
alert(xmlDom.xml);//.xml属性可以序列化 XML,获取整个 XML 字符串 //loadXML 参数直接就是 XML 字符串,如果想效果更好,可以添加换行符\n。

载入 XML 文件:

<?xml version="1.0" encoding="utf-8"?>
<root>
<user>Lee</user>
<email>352019378@qq.com</email>
<url>http://www.baidu.com</url>
</root>
    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!'); //循环后抛出错误
}
var xmlDom = createXMLDOM();
xmlDom.load('test.xml'); //载入一个 XML 文件
alert(xmlDom.xml);//.xml属性可以序列化 XML,获取整个 XML 字符串

3.获取XML文档中的数据:

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

   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!'); //循环后抛出错误
}
var xmlDom = createXMLDOM();
xmlDom.loadXML('<root version="1.0"><user>Lee</user></root>');//载入XML字符串 var user = xmlDom.getElementsByTagName('user')[0]; //获取<user>节点
alert(user.tagName); //获取<user>元素标签
alert(user.firstChild.nodeValue); //获取<user>里的值 Lee,没有innerHTML(因为不是标准DOM)

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

var email= xmlDom.createElement('email');//创建一个标签
xmlDom.documentElement.appendChild(email);//将创建的标签加载到XML文件中

总结:XML和XHTML一样可以通过标准DOM来操作

DOM操作XML文件的更多相关文章

  1. php中通过DOM操作XML

    DOM文档在js里早就接触过,知道DOM不但可以操作html文档,还可以操作XHTML,XML等文档,有着极强的通用性,下面我们通过两个小例子,看看在PHP中是如何用DOM操作XML文档的,和js中差 ...

  2. php : DOM 操作 XML

    DOM 操作 XML 基本用法 XML文件: person.XML <?xml version="1.0" encoding="utf-8" ?> ...

  3. Qt之QDomDocument操作xml文件-模拟ini文件存储

    一.背景 不得不说Qt是一个很强大的类库,不管是做项目还是做产品,Qt自身封装的东西就已经非常全面了,我们今天的这篇文章就是模拟了Qt读写ini文件的一个操作,当然是由于一些外力原因,我们决定自己来完 ...

  4. JAVA中通过Jaxp操作XML文件基础

    Java中有多种方式操作XML文件,目前讲一讲以SUN公司提供的DocumentBuilderFactory工厂类对象操作XML. 使用XML基本操作就是需要CRUD(增删改查),那么首先通过一个查询 ...

  5. 使用DOM解析xml文件

    使用DOM解析xml文件 要解析的xml文件如下: <?xml version="1.0" encoding="UTF-8"?> <Langu ...

  6. C#操作xml文件:使用XmlDocument 实现读取和写入

    XML文件是一种常用的文件格式,例如WinForm里面的app.config以及Web程序中的web.config文件,还有许多重要的场所都有它的身影.Xml是Internet环境中跨平台的,依赖于内 ...

  7. Asp.Net 操作XML文件的增删改查 利用GridView

    不废话,直接上如何利用Asp.NET操作XML文件,并对其属性进行修改,刚开始的时候,是打算使用JS来控制生成XML文件的,但是最后却是无法创建文件,读取文件则没有使用了 index.aspx 文件 ...

  8. Java操作XML文件 dom4j 篇

    在项目中,我们很多都用到了xml文件,无论是参数配置还是与其它系统的数据交互.今天就来讲一下Java 中使用dom4j来操作XML文件. 我们需要引入的包: //文件包 import java.io. ...

  9. PHP操作XML文件学习笔记

    原文:PHP操作XML文件学习笔记 XML文件属于标签语言,可以通过自定义标签存储数据,其主要作用也是作为存储数据. 对于XML的操作包括遍历,生成,修改,删除等其他类似的操作.PHP对于XML的操作 ...

随机推荐

  1. MVC应用程序显示Flash(swf)视频

    前段时间, Insus.NET有实现<MVC使用Flash来显示图片>http://www.cnblogs.com/insus/p/3598941.html 在演示中,它也可以显示Flas ...

  2. WCF 获取客户端IP

    public class Service2 : IService2 { public User DoWork() { Console.WriteLine(ClientIpAndPort()); }; ...

  3. Join 具体用法

    一.Join 语法概念 Join 按照功能可分为三大类: left join (左连接) 即:取左边表的全部数据,即使右边表没有对应的数据,也是会把左边表的数据取出来,并返回 right join(右 ...

  4. arm裸板驱动总结(makefile+lds链接脚本+裸板调试)

    在裸板2440中,当我们使用nand启动时,2440会自动将前4k字节复制到内部sram中,如下图所示: 然而此时的SDRAM.nandflash的控制时序等都还没初始化,所以我们就只能使用前0~40 ...

  5. SQL Server 如何添加删除外键、主键,以及更新自增属性

    1.添加删除主键和外键 例如: -----删除主键约束DECLARE @NAME SYSNAMEDECLARE @TB_NAME SYSNAMESET @TB_NAME = 'Date'SELECT ...

  6. ArrayList源码解读(jdk1.8)

    概要 上一章,我们学习了Collection的架构.这一章开始,我们对Collection的具体实现类进行讲解:首先,讲解List,而List中ArrayList又最为常用.因此,本章我们讲解Arra ...

  7. Code Signal_练习题_digitDegree

    Let's define digit degree of some positive integer as the number of times we need to replace this nu ...

  8. python-状态模式

    源码地址:https://github.com/weilanhanf/PythonDesignPatterns 说明: 在软件开发过程中,各种应用程序可能会根据不同的情况做出不同的处理.最直接的方案就 ...

  9. python-享元模式

    源码地址:https://github.com/weilanhanf/PythonDesignPatterns 说明: 如果一个软件系统在运行时所创建的相同或相似对象数量太多,将导致运行代价过高,带来 ...

  10. Mysql数据库 的库表简易操作

    一. 库的操作 1.创建数据库 创建数据库: create database 库名 charset utf8;   charset uft8  可选项 1.2 数据库命名规范: 可以由字母.数字.下划 ...