在介绍DOM接口之前,首先介绍DOM的应用。DOM的应用一般可分为以下几种。
(1)处理XML文档:从各种源加载XML,以节点的方式分析或处理XML文档,输出或保存XML文档。这是DOM最基本的用途。
(2)验证(Validate)XML文档:从各种源加载XML,使用XML架构或DTD验证XML文档。
(3)执行可扩展样式表语言转换(XSLT):从各种源加载XML和XSLT文档,执行XSL转换。
注意:W3C的DOM建议规范中,并没有提出要使用DOM验证XML文档或进行XSL转换,加载和保存XML文档也只是在第3级规范中才提出。在实际应用中,许多处理器除了实现DOM的功能,还支持对DOM中的XML文档执行验证和XSL转换操作。从文档加载DOM对象,处理后保存或输出,也是实际应用的必然要求。
以下举出若干示例,演示如何利用DOM完成处理XML文档的任务。所有示例均使用示例6-1的XML文档源文件。
示例6-1:样本文件.xml
<?xml version="1.0" encoding="GB2312" standalone="yes"?>
<我的电脑>
<CPU 工作频率="1.5GHz"/>
<内存 容量="512MB"/>
<硬盘>
<盘符>C</盘符>
<分区>系统盘</分区>
</硬盘>
<光驱/>
</我的电脑>
6.2.1 调用DOM处理引擎
在使用DOM之前,需要了解如何调用DOM处理引擎的方法。本章以比较容易使用的MSXML为例,介绍DOM的应用。在Windows平台上,MSXML文档对象模型可以通过COM或ActiveX对象的方式调用。
1.使用Visual Basic 6.0调用MSXML 4.0引擎
使用Visual Basic 6.0调用MSXML引擎的步骤如下:
(1)新建一个工程或打开现有工程。
(2)在“工程”(Project)菜单中选择“引用”(References)命令。
(3) 在弹出的“引用”对话框中,将“可用的引用”列表框的滚动条往下拉,找到“Microsoft XML, V4.0”,选中该项,在前面的复选框中打勾(如要引用其他版本的引擎,可勾上与该引用项对应的复选框),如图6-4所示。
(4)单击“确定”按钮,关闭该对话框。这时可在工程中引用MSXML的接口对象,如图6-5所示。
![[SCM]actwin,-50,153,270,393;ҽӃ - ̱
VB6.EXE
2006-8-20 , 12:19:01](https://i-blog.csdnimg.cn/blog_migrate/b62c7721e31851ad344c0b1f1622c0d8.png)
![[SCM]actwin,0,10,89,250;̱ - Microsoft Visual Basic [ɨƝ
VB6.EXE
2006-8-20 , 12:32:20](https://i-blog.csdnimg.cn/blog_migrate/b37bb5400b2edf20758804e7804fa99b.png)
图6-4 添加对MSXML的引用 图6-5 添加初始化DOMDocument对象的代码
2.使用JScript调用MSXML 4.0引擎
JScript是微软类似JavaScript的实现,广泛用于Windows脚本宿主(Windows Scripting Host,WSH)、HTML网页、HTML应用程序(HTML Application,HTA)以及ActiveX服务器网页(ASP)的脚本编程中。在JScript中,使用ActiveXObject创建MSXML文档对象模型实例。步骤如下:
(1)打开记事本或其他文本编辑器,新建脚本文件(如脚本在脚本宿主环境下运行,应创建后缀为“*.js”的文件)。
(2)在脚本中输入调用MSXML引擎的代码,使用“new ActiveXObject”语句创建MSXML文档对象模型实例。代码如下:
// ... 其他代码
var dom = new ActiveXObject("Msxml2.DOMDocument.4.0");
// 创建 MSXML 4 的 DOMDocument 实例
// 如要创建其他版本的对象实例,可将上面的“4.0”改成相应的版本号,如“6.0”等
// ... 在此对该对象执行各种操作
dom = null; // 释放对象引用
以上代码的“dom”变量即为DOM文档实例引用,该实例实现了IXMLDOMDocument接口。在脚本中,使用完该对象时,建议使用“变量名 = null;”形式,将变量设置为空引用。其目的是提示脚本引擎,本脚本已不再需要引用该对象,可以释放其所占用的资源。
6.2.2 加载XML文档
XML的来源很多,可以是文件系统中的文件、从其他途径(如网络)传送到XML处理器的流、在XML处理过程中生成的新XML文档等。只有顺利加载了XML文档,才能执行后续的处理操作。XML处理器在加载XML文档的过程中,往往同时验证该文档。
1.使用MSXML加载XML文档(JScript)
示例6-2介绍了在Windows脚本宿主环境下,使用JScript调用MSXML处理器,加载XML文档的方法。运行该代码时,要求系统中已经安装了MSXML 4.0处理器,同时,由于代码中使用了load("样本文件.xml")方法,应该在运行该脚本时,将“样本文件.xml”放置在脚本文件的目录下。
示例6-2:加载文档.js
// 初始化 DOM 文档实例
var /*DOMDocument*/ doc = new ActiveXObject ("MSXML2.DOMDocument.4.0");
// 设置加载文档时的属性
doc.async = false;
// 设置当前工作目录为脚本所在的目录
var /*WshShell*/
shell = WScript.CreateObject ("WScript.Shell");
shell.CurrentDirectory =
WScript.ScriptFullName.substring (
0,
WScript.ScriptFullName.lastIndexOf (WScript.ScriptName)
);
shell = null;
// 加载文档
doc.load ("样本文件.xml");
// 检查是否有加载错误
if (doc.parseError.errorCode != 0)
{ // 如加载过程中出现错误,显示错误原因,然后退出程序
WScript.Echo ("加载文档时出现错误:/n" + doc.parseError.reason);
WScript.Quit ();
}
// 显示所加载的文档
WScript.Echo ("加载文档:/n" + doc.xml);
说明:默认情况下,在Windows的资源管理器下可以直接打开并执行脚本。JScript脚本也可在命令提示符下执行,方法是在提示符下输入“cscript 脚本文件名.js”的形 式,如:
cscript 加载文档.js
如成功加载文档,应输出示例6-3所示的内容。
示例6-3:加载文档输出.txt
加载文档:
<?xml version="1.0" standalone="no"?>
<我的电脑>
<CPU 工作频率="1.5GHz"/>
<内存容量="512MB"/>
<硬盘>
<盘符>C</盘符>
<分区>系统盘</分区>
</硬盘>
<光驱/>
</我的电脑>