0%

在IE中创建DOM并载入XML

在IE中创建DOM并载入XML:
(1)创建XML DOM对象的实例
Microsoft在JavaScript中引入了用于创建ActiveX对象的ActiveXObject类,通过该类可以创建XML DOM对象的实例,代码如下:
var xmldoc = new ActiveXObject(“Microsoft.XMLDOM”);
(2)载入XML:
Microsoft的XML DOM有两种载入XML的方法:load()和loadXML(),本实例中使用的是load()。

load()方法用于从服务器上载入XML文件,load()方法的语法格式如下:
xmldoc.load(url);
参数说明

xmldoc:为XML DOM对象的实例。

url:为XML文件的名称。需要注意的是:load()方法只可以载入同包含JavaScript的页面存储于同一服务器上的文件。
在载入时还可以采用同步或异步两种模式,默认情况下,文件按照异步模式载入,如果需要进行同步载入,可以设置async属性为False。本实例采用的是默认模式,即异步模式。
在异步载入文件时,还需要使用readyState属性和onreadystatechange事件处理函数,这样可以保证在DOM完全载入后执行其他操作(例如本例,调用自定义的JavaScript函数createTable()将载入到DOM中的XML取出来并以表格的形式显示在页面中),代码如下:

1
2
3
4
xmldoc.onreadystatechange = function() {
if(xmldoc.readyState == 4) createTable(xmldoc);

}

loadXML()方法可直接向XML DOM输入XML字符串,例如:

1
xmldoc.loadXML("<root><son/></root>");

在Mozilla中创建DOM并载入XML。
(1)创建XML DOM对象的实例

DOM标准指出使用document.implementation对象的createDocument()方法可以创建XML DOM对象的实例,代码如下:

1
var xmldoc = document.implementation.createDocument("", "", null);

createDocument()方法包括3个参数,第一个参数用于指定文件的命名空间URL;第二个参数用于指定文件元素的标签名;第3个参数用于指定文档类型对象(因为Mozilla中还没有对文档类型对象的支持,所以总是null)。
(2)载入XML

Mozilla只支持一种载入XML的方法:load()。Mozilla中的load()方法和IE中的load()方法工作方式一样,只要指定载入的XML文件,以及是同步还是异步模式载入即可。

Mozilla的XML DOM会在文件完全载入后触发load事件,也就是说必须使用onload事件处理函数来判断DOM何时完全载入,这样可以保证在DOM完全载入后执行其他操作(例如本例,调用自定义的JavaScript函数createTable()将载入到DOM中的XML取出来并以表格的形式显示在页面中),代码如下:

1
2
3
4
xmldoc.onload=function(){
xmldoc.onload = createTable(xmldoc);

}

Mozilla不支持IE中的onreadystatechange事件,也不存在readyState属性从1到4的变化过程。当文档加载完成之后,DOM对象将被触发load事件,通常在load事件的处理函数中进行XML文档的处理,以下给出了相关的示例代码。

1
2
3
4
5
var doc = document.implementation.createDocument("", "", null);
doc.load("books.xml");
doc.onload = function() {
// 加载XML完成
};

在Mozilla中可以通过加载XML字符串的方式加载XML文档。Mozilla不支持IE中的loadXML方法,它是通过DOMParser对象加载XML字符串生成DOM对象的,以下是在Mozilla中通过字符串方式加载XML文档的示例。

1
2
3
4
5
6
7
8
9
// XML字符串
var xmlString = "<Books><Book><Title>Ajax In Action</Title>
<Author>Dave Crane</Author></Book><Book><Title>
Professional Ajax</Title><Author>Nicholas C.Zakas</Author>
</Book></Books>";
// 创建DOMParser对象
var parser = new DOMParser();
// 解析字符串,创建DOM对象
var doc = parser.parseFromString(xmlString, "text/xml");

编写自定义的JavaScript函数readXML(),用于读取XML文件并显示在页面中。在该函数中,首先实现在IE或Mozilla浏览器中创建DOM,然后把指定的XML文件载入到DOM中,最后调用自定义的JavaScript函数createTable()在页面的指定位置显示XML文件的内容,代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
<script language="javascript">

function readXML() {

var url = "goodss.xml";

if(window.ActiveXObject) { //IE

var xmldoc = new ActiveXObject("Microsoft.XMLDOM");

xmldoc.onreadystatechange = function() {

if(xmldoc.readyState == 4) createTable(xmldoc);

}

xmldoc.load(url);

}
// Mozilla......

else if(document.implementation&&document.implementation.createDocument) {

var xmldoc = document.implementation.createDocument("", "", null);

xmldoc.onload=function(){

xmldoc.onload = createTable(xmldoc);

}

xmldoc.load(url);

}

}

</script>
坚持原创及高品质技术分享,您的支持将鼓励我继续创作!