msxml应用总结

上传人:第*** 文档编号:34522117 上传时间:2018-02-25 格式:DOCX 页数:14 大小:83.51KB
返回 下载 相关 举报
msxml应用总结_第1页
第1页 / 共14页
msxml应用总结_第2页
第2页 / 共14页
msxml应用总结_第3页
第3页 / 共14页
msxml应用总结_第4页
第4页 / 共14页
msxml应用总结_第5页
第5页 / 共14页
点击查看更多>>
资源描述

《msxml应用总结》由会员分享,可在线阅读,更多相关《msxml应用总结(14页珍藏版)》请在金锄头文库上搜索。

1、 1 / 14MSXML 应用总结 概念篇微软提供了大量的 XML 开发工具和技术,而 SMXML(Microsoft XML Core Services )应该是一般开发中最常用到的技术了。MSXML 支持了包括 DOM(Document Object Model)、SAX(Simple API for XML)、XMLHttpRequest、XPath 、SOM(Schema Object Model)等多种 API 接口和 XML 操作工具。本篇先主要介绍应用 MSXML 所涉及到的概念及说明,下一篇将总结一下应用 MSXML DOM SDK 进行XML 文档处理。一、MSXML 版本说

2、明目前共有四种 MSXML 版本,分别为 MSXML3、MSXML4 、MSXML5 和 MSXML6。由于在微软的Windows 系统中,MSXML 主要是用来支持浏览器和 Office 的,因此这些版本多与不同浏览器版本及Office 版本相关。微软推出 IE6 时带的是 MSXML3,因此一般在 XP 系统上是支持 MSXML3 的,MSXML3 也成为应用最广泛的一个版本。MSXML5 主要用来支持 Microsoft Office;而 MSXML4 很快就被更新版本的 MSXML6 替代了,微软推荐首选应用最新的 MSXML6,其次应用 MSXML3。二、XML(Xtensible

3、Markup Language)简介要学习 MSXML 首先要了解 XML。XML 是一种被设计用于网络环境或跨平台环境数据存储和交换的标记性语言,达到数据存储分析一致性的目的。XML 的结构形式和大家熟悉的 HTML 类似,但两者的用途没有关联,最大的区别在于 XML 用来存储数据,并允许使用者定义自己的元素。XML 内容灵活的可扩展性以及简单易用的结构设计,使它发展非常迅速,目前已是各种应用环境下的程序之间进行数据传输和交换的最流行技术,另外在信息存储和描述领域,XML 也逐渐成为应用标准。关于 XML 的术语大家可以去专门的学习网站了解,这里只简单的说明一下 XML 的文档结构。先看一个

4、 xml 文档示例。文本 2 / 14子节点第 1 行为 XML 声明,定义 XML 使用的版本和编码。如果 XML 中的编码方式不是 UTF-8 或 UTF-16,则必须声明编码方式,否则有可能解析失败。关于 XML 编码的问题下面会详细介绍。第 2 行是注释,形式跟 HTML 是一样的。第 3 行的 root 为根元素(文档元素),其他所有元素都包含在该元素的开始和结束标签之间。XML文件必须要有一个根元素,其他元素都出现在根元素内部。第 4 行到第 10 行为根元素的子节点元素,这些元素是可以重名的。一个元素可以拥有属性、文本和子元素。如第 4 行的 item 元素拥有“type”属性,

5、item 标签之间的“文本”就是该元素的文本,第 8 行的 item则拥有子元素“subitem”。第 6 行的段是一个特殊的语法,被称为 CData 段。表示其中的字符无需解析,例如一些类似的特殊字符,这样可以防止 XML 的结构被破坏。另外需要注意的一些事项:1、XML 的标签是大小写敏感的;2、一些转义字符在表达非转义的情形下,应使用实体引用,如将变为> ,将&变为3、XML 中应尽量少使用属性,而多使用子元素。三、XML 中的编码计算机上的字符集问题是一个让所有开发者头疼的问题,由于历史原因以及具体应用的不同需求,产生了很多种字符编码集,常见的大概可以分为两种:单字节编码和多字节编

6、码,前者代表为 ASCII,后者代表为 Unicode。但是除了这两者之外,还有很多字符集,而且单 Unicode 就提供了 3 种编码方法:UTF-8,UTF-16 和 UTF-32。关于字符集的具体知识,大家可以自己去查阅一些资料。 3 / 14XML 对字符编码的规定是:如果 XML 指定编码格式,则按照指定格式进行处理,当然此时必须保证文档存储的字符编码格式与指定的统一,或者解析器能够处理这种编码格式,如果出现错误,解析器会给出提示信息。当 XML 没有指定编码格式时,采用默认编码格式 UTF-8,如果此时文档编码格式不是UTF-8,那么解析就会出错。四、DOM(Document Ob

7、ject Model)DOM 是 MSXML 的一种对 XML 文档进行处理的标准模型,将 XML 文档全部加载到内存中形成一个树结构,在此基础上将 XML 当作一个对象进行操作。DOM 提供了一系列的 API 并为 XML 结构中的各种类型元素定义了对应的对象接口。利用这些接口,可以对 XML 文档进行创建、遍历,对文档内容进行添加、删除、修改等动态操作。关于 DOM 的应用将在下一篇中详细说明。五、SAX (Simple API for XML)看名字可以知道 SAX 是对 XML 操作的一个 API 集合,为什么这个集合 Simple呢?其实是相对于DOM 来说的。上面已经介绍,DOM

8、模型每次都会将整个 XML 文档装载到内存当中维护一个树结构,可想而知,当 XML 文档比较复杂或者体积比较大的时候,维护起来肯定会影响到效率。因此,当开发者比较重视效率时,应用 SAX 可能是一个好的选择。SAX 最大的特点就是事件驱动。装载 XML 文件时,SAX 遍历文档并产生诸如开始和结束解析元素之类的事件,通知外部应用进行处理。所有的处理都在一次遍历中完成,因此 SAX 处理 XML 文档效率很高。另外针对大型的文档,SAX 可以每次只将一部分装入内存,这样无论在空间效率和时间效率上都能得到有效提高。当然 SAX 的应用范围是会受到一些限制,而且外部的处理也非常琐碎,总之与 DOM

9、应该是很好的互补。六、XPath 4 / 14Xpath 是一种能够在 XML 文档中寻找信息的语言,它通过 XML 文档中的元素和属性来进行导航,形式非常类似我们平时用的路径表达式。XPath 内置了很多函数可以帮助实现导航功能,通过指定路径表达式来选择 XML 文档中的节点或节点集合。在 XPath 中有七种节点:元素、属性、文字、命名空间、处理说明、注释和根节点。具体的路径表达式规则大家可以参考相关资料。七、MSXML API 版本这一节是最新加进来的,因为上面第一节说了一下 MSXML 的版本,但是还有一个 MSXML API 的版本,这两者比较容易混淆,在此说明一下。第一节说的是 M

10、SXML dll 库文件的版本,而 API 的版本是另一套规则。历史版本有:MSXML1.0、MSXML1.0 SP1/SP2、MSXML2.0、MSXML2.6、MSXML3.0、MSXML4.0、MSXML5.0 for Microsoft Office Applications,这些版本中较早的 MSXML1.0 和 MSXML1.0 SP1/SP2 现在都已不再支持,MSXML2.0 是处理 XML 文档最常用的版本,后面的版本都是添加了一些新的功能接口。基本的概念就这些了,希望对大家了解 MSXML 有所帮助。MSXML 应用总结 开发篇(上)(由于包含太多格式符号,新浪提示篇幅过长

11、,因此分为上、下两篇)本篇是接前文“MSXML 应用总结 概念篇”写的,主要总结一下 MSXML DOM 接口的应用。DOM(Document Object Model)是微软提供的处理 XML 文档的一个 API 标准库,我们可以将其理解为一组抽象了 XML 文档结构的接口。MSXML 的 DOM 模型是符合 W3C DOM 标准的,而 DOM API 在 Windows 中以 COM 接口的形式提供,关于 COM 请大家查阅相关资料。简单来说,COM 提供了一个环境和一套规则,使接口的设计实现到对象的创建、使用和释放都标准化,从而使 COM 支持跨平台和跨语言;更重要的是,遵守 COM 规

12、范使我们代码的接口与实现分离,将程序框架的稳定与扩展统一起来,对于使用 COM 接口的人则更加简单直观。COM 中一个很重要的概念是 refcount,即接口对象的访问计数,通过 AddRef 和 Release 两个接口函数来控制。要想用好 refcount 还是件较困难的事情,因此我 推荐大家使用智能指针。使用智能指针就像使用一个简单指针一样,我们完全不用去关心指针指向内存空间的释放。本篇总结采用 API 版本是 MSXML2.0。 5 / 14首先我们看一下常用的接口:IXMLDOMDocument:XML 文档接口,DOM 树结构的根结点,是对文档访问和操作的入口;IXMLDOMNod

13、e:节点接口,该接口是普遍意义上的节点接口,很多类型节点接口都从它派生,包括IXMLDOMDocument;IXMLDOMNodeList:节点列表接口,表示一组关联的节点集合;该列表中的 node 元素通过index(从 0 开始)访问,另外该接口中的元素还是动态的,会随着 XML 文档的改变而更新;IXMLDOMNamedNodeMap:节点集合接口,也表示一组关联节点的集合;不过与 list 不同的是,该集合是无序的,该接口常用于表示节点的属性集,并且该接口也是动态的;IXMLDOMElement:元素接口,一般用来表示一个节点及其属性;IXMLDOMAttribute:节点属性接口,对

14、节点属性进行访问和操作;IXMLDOMText:节点中文本控制接口;IXMLDOMComment:XML 文档中的注释接口;IXMLDOMParseError:出错处理接口,包括了错误的详细信息。以上都是最常用的 DOM 接口,还有一些接口没有在此列出。对于接口来说,都有相应的智能指针接口,一般为接口名加上 Ptr,比如 IXMLDOMDocument 的智能指针接口为 IXMLDOMDocumentPtr。这里有一个接口继承关系示意图: 6 / 14在 VS2005 环境下进行 DOM 应用开发,首先要设置 DOM 接口应用环境,在 stdafx.h 文件中加入语句:#import raw_

15、interfaces_only如果你的系统文件夹下有 msxml6.dll 文件,#import 语句将成生 MSXML 库类型信息,一般会在你的工程编译文件夹下生成 msxml6.tlh 和 msxml6.tli 两个文件,打开看一下可知这两个文件包含了一些COM 接口类型及函数的声明以及一些库信息。实际上,#import 指令使 dll 库中的类型信息导出为描述的COM 接口的 c+类头文件。而“raw_interfaces_only”属性使得生成文件只有 msxml6.tlh 一个,而且接口函数只有 HRESULT 返回类型一种形式,且省去了 raw_前缀;如果去掉该属性,则除了在 ms

16、xml6.tlh 文件中声明带 raw_前缀的返回 HRESULT 类型的接口函数外,还会在 msxml6.tlh 中生成不带 raw_前缀的wrapper 接口函数,并在 msxml6.tli 文件中生成返回接口指针类型的 wrapper 接口函数。因此我们在应用DOM 接口的时候,发现有两套完成相同功能的接口函数,分别返回 HRESULT 类型和接口指针类型,就是因为上述原因,这应该是 Windows 环境下 COM 接口描述的规则, 比较深入的介绍请参考这篇文章:http:/ 7 / 14另外一种加载 DOM 接口的方法是直接在工程环境中添加 msxml 库的路径,并链接 msxml6.lib 文件,这里不再详述。设置

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 解决方案

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号