admin 管理员组文章数量: 1087139
2024年4月19日发(作者:php库有哪些教程官网)
维普资讯
总第227期
2008年第9期
计算机与数字工程
Computer&Digital Engineering
VoL 36 NO.9
151
XML解析技术在电子白板保存与打开中的应用
曾红伟江红
上海200062) (华东师范大学计算中心
摘要通过介绍XML的定义,XML的历史渊源;以及2种主要的XML解析技术:I)OM(Document Object Mode1)
解析技术SAX(Simple API for XML)解析技术;重点阐述XML解析技术在电子白板保存与打开中的应用。
关键词XML解析
中图分类号
IX)M SAX保存打开
TP393.03
Save and Open in Electronical Whiteboard Based on XML Parse
Zeng Hongwei Jiang Hong
(Computer Center at East China Normal University,Shanghai 200062)
Abstract This paper firstly introduces the definition of XML and the history of XML.Secondly,it introduces two
main technology of XML parse:DOM(Document Object Mode1)and SAX(Simple API for XML).Finally,it evidently in-
troduces the implement of save and open in electronical whiteboard based on XML parse.
Key words XML parse,D0M,SAX,save,open
Class Number TP393.03
1 引言
XMLE ](extensible Markup Language)是一种
越来越广泛,XML解析的作用也变得越来越显著,
尤其是处理大量XML文档的时候。使用恰当的
XML解析技术,可以提高解析XML文件的效率。
简单的数据存储语言,使用一系列简单的标记描述
数据。XML的前身是SGMI (The Standard Gen—
eralized Markup Language),是IBM从6O年代就
开始发展的GML(Generalized Markup Lan—
2 两种主要的XML解析技术
简单的说,一个XML解析器就是一段可以读
人XML文件并分析其结构的代码。XML解析的
过程是将XML流式数据结构化的过程。根据
XML的语法定义,依次对输入的XMI 文件作词
法分析、语法分析以及语义分析。大多数XML解
析器根据DTD(Document Type Definition)或
guage)。XML是SGML的一个子集,它是描述网
络上的数据内容和结构的标准。XML则对数据赋
予上下文相关功能,它继承了SGML的大部分功
能,同时大大缩减了SGML的复杂性。与SGMI
相比,XMI 规范不到SGMI 规范的1/10,简单易
XML Schema进行确认,核实该XML数据序列符
合对应的DTD或XML Schema中的各种规则,然
懂,是一门既无标签集也无语法的新一代标记语
言。
后通过API对XML文件的内容进行访问。
目前XML解析器所采取的解析技术主要有2
种:1)DOM解析DOM的全称是Document Object
XML是以一系列简单的标记描述数据,XML
解析器可以解析XMI 文件,并从XML文件中提
取出数据。XML作为一种数据存储语言,用处已
Model,就是一个文档对象组成的模型;2)SAX解
*
收稿日期:2008年5月16日,修回日期:2008年6月19日
作者简介:曾红伟,男,硕士研究生,研究方向:现代信息系统及开发技术。江红,女,副教授,研究方向:现代信息系统
及开发技术。
维普资讯
曾红伟等:XML解析技术在电子白板保存与打开中的应用 第36卷
析SAX的全称是Simple API for XML,这个接口
规范是XML分析器和XMI 处理器提供的较
XMI 更底层的接口。
2.1 DoM解析
文档对象模型(DOM)是W3C标准,它允许把
一
个文档动态地放在一起,可以浏览和操控文档的
结构和内容。为了使用DOM,用一个XML解析
器加载XMI 文件到内存中。文件被加载后,你可
以轻易通过文档对象模型(DOM)操控文件中的信
息 。
文档对象模型(DOM)的结构可以视为一个节
点树。树的根节点是Document node,它有一个或
多个从主干分支出来的孩子节点,而每个孩子节点
反过来又可以它自己的节点。比如,考虑下面这个
XMI 文件[ :
<documentE1ement>
<firstChildElement attributeNode一”attributeValue”
>Text Node ̄/firstChildElement>
<secondChildElement>Text Node</second—
ChildElement ̄
<!一一Example comment一一>
</documentElement ̄
它的DOM结构对应的节点树如图1 L :
图1 DOM结构对应的节点树
从图1可以看出,在DOM中,文档的逻辑结
构类似一棵树。DOM利用对象来把文档模型化,
这些模型不仅描述了文档的结构,还定义了模型中
的对象的行为。换句话说,图中的节点不是数据结
构,而是对象,对象中包含方法和属性。下面来看
一
下DOM中定义的对DOM树的节点进行各种
操作的常用对象和方法_4]:
1)Document对象:作为树的最高节点,Docu—
ment对象是对整个文档进行操作的人口;
2)Element和Attr对象:这些节点对象都是
文档某一部分的映射,节点的定级层次恰好反映了
文档的结构;
3)Text对象:作为Element和Attr对象的子
节点,Text对象表达了元素或属性的文本内容。
Text节点不再包含任何子节点;
4)集合索引:DOM提供了几种集合索引方式,
可以对节点按指定方式进行遍历。索引参数都是
从0开始记数的。
DOM就是一组对象的集合,通过操作这些对
象,程序员能操纵XMI 和HTMI 数据。利用
DOM中的对象,开发人员可以动态地创建XML,
遍历文档、增加/删除/修改文档内容,具有较好的
导航能力。DOM解析有以下优点:1)能保证正确
的语法和格式;2)简化了文档的操作;3)与数据库
可以良好的结合转换。DOM解析也存在一些不
足:1)DOM加载XML文档生成在内存中的一颗
节点树,构建树的成本比较高,尤其是当XMI 文
档比较大时,要消耗大量内存;2)D0M只能对整个
XML文档进行解析,当只需解析部分XMI 文档
时,创建那些不被使用的对象是极其浪费的。
2.2 SAX解析
用于XML的简单API(SAX)目的是为了提
供一个标准化的方式来解析XMI ,并能更有效地
分析大量XMI 文档l3]。SAX是一个用于处理
XML的事件驱动的“推”模型。它不是W3C标准,
但它是一个得到了广泛认可的使用Java开发的
API。SAX的接口完全不同于DOM接口,采用了
基于事件的方式来处理XMI 文档。基于事件是
指SAX为应用开发者提供了处理感兴趣的特定元
素的方法,而不必在应用层次处理之前预先建立元
素。
SAX提供4个基本接口:ContentHandler、
DTDHandler、ErrorHandler以及EntityResolver,
示意图如图2所示。
图2 SAX接口图
在SAX中,其核心接口是ContentHandler。处
理特定的XML文件时,需要为其创建一个实现了
ContentHandler的类来处理特定的事件。Cont
entHandler接口其中一些主要的方法有startDocu—
维普资讯
第36卷(2008)第9期 计算机与数字工程
const;
ment,endI)ocument,startElement,endElement,Char—
acters等。
XMI Attribute addAttribute(XMI CSTR lpszName,
XMLCSTR lpszValuev);
DOM是基于树形结构的W3C推荐的API标
准,而SAX是事件驱动的有广泛支持的API标
准。和DOM相比,SAX解析有以下优点:1)SAX
XMLAttribute getAttribute(int i--0)const ̄
void deleteAttribute(XMLCSTR lpszName);
XMLAttribute updateAttribute(XMLAttribute*
可以解析任意大小的文件;2)适合只处理某些特定
数据的场合;3)简单快速。但SAX也存在一些不
足:1)因为SAX不会把整个XMI 文档加载到内
newAttribute,XMLAttribute*oldAttribute);
XMLCSTR addText(XMLCSTR lpszValue,int pos);
XMLCSTR getText(int i)const;
存中,所以它不能像DOM一样对XMI 文档作随
机的存取;2)目前还没有主流浏览器支持SAX[ 。
3 电子白板中保存与打开的实现
3.1电子白板项目背景
电子白板SharpPen是本实验室与上海夏普研
究所的合作项目,软件开发环境为Microsoft Visu—
al Studio 2005,编程语言VC++,采用MFC框
架。SharpPen实现画笔的绘制、图形描画、文字的
输人、抓图、复制、粘贴、保存、打开、邮件发送等功
能。本文仅对SharpPen中的保存与打开功能进行
研究与实现。
3.2 DOM解析的实现
电子白板SharpPen使用XMI 文件来记录需
要保存的对象的属性信息,然后对XMI 文件进行
D0M解析,读取出XML文件记录的对象的属性
信息,根据这些属性信息调用GDI+,便可把原先
的对象在创建出来。至此,便实现了保存与打开。
SharpPen对XMI 文件进行解析没有采取现成的
解析器,如Microsoft公司的MSXMI 等,而是基
于DOM解析的原理加以实现,并对一般DOM解
析器的功能加以扩充,不但能对XML文件进行解
析,还可以生成XML文件。现在介绍一下Sharp—
Pen中DOM解析器实现的关键类XMLNode,类
的主要方法如下:
class XMI Node
{
public:
XMLNode(struct XMI NodeDataTag pParent,XM
LCSTR lpszName,char isDeclaration);
~
XMI Node();
void createXMLTopNode(XMLCSTR lpszName,char
isDeclaration=FALSE);
XMLNode getXMLTopNode(XMLCSTR lpszName);
XMLNode addChild(XMLCSTR lpszName,char is—
Declaration,int pos);
XMLNode getChildNode(XMLCSTR narne.int i)
void deleteText(XMLCSTR lpszValue);
XMLCSTR updateText(XMLCSTR lpszNewValue,
XMLCSTR lpszOldValue);
};
在上述类XMI Node的方法中,函数create—
XMLTopNode addChild addAttribute addText
是为了实现XMI 文件的生成,函数getXMLTop—
Node getChildNode、getAttribute、getText是为了
实现XMI 文件的解析。
3.3生成XML文件实现保存
SharpPen总共有8张Sheet(画布),保存数据
以Sheet为单位,每张Sheet对应一个XMI 文件,
文件中记录着Sheet上所绘制的所有对象的属性
信息。比如,在Sheet 1上绘制一条直线,那么生成
的Sheet0.xml文件内容如下:
<?xml version ̄”1.0”encoding--”UTF一8”?>
<Sheet sizex一”1024”sizey--”738”>
<Properteis>
<Background type一”Image”fittype--”NULL”>
<Dam encoding--”None”format…’file--””>
</Data ̄
</Background>
</Properteis>
<Objects>
<Object id=”1’’type=’’Line”x一”528.000000”
y一”376.000000”rotation=”一21.882338”width--”262.
944855”height一”16.000000’’linecolor一”O000ff”thick—
ness一”16”/>
</Objects>
</Sheet>
SharpPen将所有的Sheet对应的XMI 文件
打包成后缀名为.SWS的文件,此SWS文件即为
SharpPen的保存结果。至此,保存功能实现。
3.4解析XML文件实现打开
SharpPen载人保存功能中生成的SWS文件,
利用DOM解析所有的Sheet对应的XMI 文件进
行解析,读取出XMI 文件中记录的对象属性信
维普资讯
154 曾红伟等:XML解析技术在电子白板保存与打开中的应用 第36卷
息,利用这些属性信息,便可以把这些对象创建出
来,并再现于Sheet上。比如,DOM解析对
SheetO.xml进行解析,生成节点树(如图3),便可
简单的数据存储语言,随着XMI 的应用越来越广
泛,XML解析的作用也越来越重要。本文是在
DOM解析的基础上稍许做了些改进,并用于电子
白板中现保存与打开功能。XML解析技术还在不
断的完善,在新的特定领域还涌现出新的解析技
术,如XPP解析技术[5]。XML解析是XMI 文档
处理的关键技术之一,所以,对XMI 解析的研究
是十分有意义的。
以读取出所绘制的直线的属性信息,如5/7、.y、
width、height等,然后就可以调用GDI+对直线进
行创建,直线便在Sheet 1上呈现出来了。至此,打
开功能实现。
参考文献
[1]2000,eXtensible Markup Language(XML)1.0
(Second Edition)[S]
r2]Bill Evjen,Kent Sharkey etc.Professional XML
2thrM].Wiley Publishing,Inc.2007
[3]David Hunter,Jeff Rafter etc.Beginning XML 4th
gditionEM].Wiley Publishing,Inc.2007
图3 SheetO.xml对应的节点树
[4]曾春平,王超,张鹏.XML编程从入门到精通
EM].北京:希望电子出版社,2002
[5]Fabio Arciniegas.XML开发指南EM].北京:清华
大学出版社,2003:73 ̄170
4 结语
XMI (extensible Markup Language)是一种
(上接第147页)
OA具有极为广阔的应用空间。Lotus Domino/
数据间的转换[J].计算机工程与设计,2005,(11):2955~
2957
Notes是一个理想的文档开发平台,其独特的文档
ID构成机制是强大的文档型数据库处理能力的基
础。通过对Lotus Notes的文档处理机制ID的深
入透彻剖析,对于使用Lotus平台进行二次开发,
[2]李燕.用Lotus Domino/Notes实现基于WEB结
构的办公自动化系统[J].软件导刊,2005,(19)
[3]武坤等著.Lotus Domino/Notes R6应用开发
[M].北京:机械工业出版社,2005:126 ̄129
[4]胡中栋,李伟.基于Lotus omiDno/Notes办公自动
实现对文档的管理、OA信息集成和知识发布都具
有很好的指导意义。
参考文献
化系统的开发[J].信息技术,2005,(12):128~131
[5]刘强,白云峭.基于Lotus omiDno/Notes的办公自
动化系统的实现[J].计算机工程与设计,2004,(7):1162
1]63
[1]王秀英,李平,赵丽华.实现关系型数据与文档型
~
版权声明:本文标题:XML解析技术在电子白板保存与打开中的应用 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://roclinux.cn/p/1713532042a639378.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论