当前位置:首页 » 服务器技术
开发技术指南» 文章正文
    引言: 自问世以来的八年间,XML已经流行起来,成为一种开放、半结构化的数据格式,用于保存数据以及通过Web交换数据。
 

 

 ·一个基于mfc的xml封装类 cxml    »显示摘要«
    摘要:一、这是我自己做的一个很简单的xml封装类。目前的功能还不够完善,希望能够在大家的提点下继续完善。二、源文件中包含有三个类(具体看头文件): cxml xml文件类 cxmlnode xml结点类 cxmlnodes xml结点集合类 三、如何使用using namespace std; bool fundfs( cxmlnode & node ); int _tmain(in......
 ·使用c++和xml建立智能文档(三)    »显示摘要«
    摘要:访问智能文档内容 为了能起到作用,你的智能文档操作dll一般需要访问(并且可能修改)下层的office文档。在例子中,它是excel项目进程表电子表格。为了这个目的,ismartdocument的几个方法为你下层文档提供了一个idispatch com接口指针。在office上编写com的人知道,idispatch提供了进入office对象模型的通道。在visual basic中,使用idispa......


简化XML处理详解(1)

自问世以来的八年间,xml已经流行起来,成为一种开放.半结构化的数据格式,用于保存数据以及通过web交换数据.由于具有简洁性与易读性,xml在应用开发人员当中备受欢迎,已成为企业架构中必不可少的一部分.

虽然很难列举xml的使用方式有几种,但有一点是可以肯定的::在进行其他操作之前,必须先对xml进行解析.实际上,选择合适的解析器往往是企业开发人员在项目中必须处理的早期决策之一.而这种决策一次又一次地归结为对两种流行的xml处理模型的选择:文档对象模型(dom)与用于xml的简单api(sax).

乍一看,dom与sax各自的优缺点似乎是互为补充的:dom在内存中建立对象图;sax基于事件,内存中不保存任何内容.所以,如果文档很小.数据读取模式很复杂,dom就是很好的选择,不然,就使用sax.

不过,实际情况从来没有这么简单.开发人员之所以往往不愿意使用sax,原因是它很复杂,不过又只好使用它,因为没有其他切实可行的选择.不然,如果xml文件超过几百kb,dom的内存开销与性能下降对应用开发人员来说就会成为棘手的绊脚石,这样就无法满足项目对性能的最低要求.

但sax果真好得多吗?sax宣称的解析性能(通常比dom快好几倍)实际上往往带有欺骗性.事实证明,sax解析具有的笨拙.只向前(forward-only)的性质不但要求额外的实现工作,而且只要文档结构变得稍稍复杂,性能就会受到影响.如果开发人员决定不对文档进行多次扫描,就必须缓存文档,或者创建定制的对象模型.

不管怎样,性能都会受到影响,尽管可以通过内部使用sax来创建更高性能的实现方案,可它仍要创建自己的对象模型,该模型酷似dom,结果与其前身(apache soap)相比,性能几乎没什么提升.此外,sax与xpath的兼容性也不是很好,通常无法驱动可扩展样式表语言转换(xslt)处理.所以,sax解析绕开了xml处理存在的重大问题.

在寻求比sax更易使用的替代方案的过程中,越来越多的开发人员求助于用xml的流式api(stax).与sax相比,stax解析器可以从xml文件拉取标记,而不是使用回调.虽然它们会显著提高易用性,但还是存在根本问题——stax的只向前解析方式仍需要繁琐的实现工作以及伴随而来的隐性性能成本.

因此,任何xml处理模型要具有广泛用途,必须完整呈现xml的层次结构.原因在于,由于xml被设计成通过web传送复杂数据,所以传送结构信息是xml固有的一项功能.

vtd-xml改变游戏规则

假设我们从头开始使用xml处理来克服dom与sax存在的上述问题.
...   下一页

 ·使用c++和xml建立智能文档(二)    »显示摘要«
    摘要:ismartdocument接口教程 下一步是建立智能文档操作dll并安装它。在你编写智能文档操作处理程序dll(它实现了ismartdocument接口方法)之前,最好先了解一下这个接口。 当用户在文档中移动的时候,你的操作处理程序dll将建立并管理一组出现在文档操作事务面板中的控件,允许你基于文档中的位置提供自定义的用户界面。映射到文档的xml大纲元素定义了用户在文档中的位置。xml元素应该指......
» 本期热门文章:

©2000-2007 All Rights Reserved. 最佳浏览:1024X768 MSIE