admin 管理员组文章数量: 1086019
2024年4月20日发(作者:结构体数组如何定义)
维普资讯
2006年第l2期
计算机与现代化
JISUANJI YUⅪANDAmUA 总第136期
文章编号:1006-2475(2006)12-0065-04
XML在Java图形中的应用
莫佳
(华东交通大学信息工程学院。江西南昌330013)
摘要:讨论了如何采用XML技术表示、存储图形数据。介绍XML的概念及其与Java的紧密联系。简要分析了目前各种主
要XMIAPI,然后结舍“流程图绘制器”软件实现了XML在Java图形中的应用。最后总结了XML表示图形的显著优点。
关键词:XML;解析器;Java图形
中圈分类号:m11.52 文献标识码:A
SO Jia
(College 0f Information Engineering。East China Jiaotong University。 m1cllang 330013。China)
Absl删:The presentation and storage of graphic data by m蛐of XML technology are discussed.First.the concept。f XML and its
close tie witll Java ale intnxtucod before briefly analyzing the current major XMIAPI.Secondly。the application ofXML in Java graphics
is discussed by considerign the implementation 0fthe“folw-chart drawer"software.Finally.the predominant merits 0fpresentign graph-
isc through XML are conduded.
Key words:XML;parser;Java graphics
0 引 言
作XML的完整API。
Java是迄今为止对可移植性提供最佳支持的编
)【^礼(eXtensible Markup Ianglla )是一种可扩展
程语言,任何机器只要配备了Java解释器,便可运行
的标记语言,它不仅具备扩展性,而且具有很强的自
Java程序…1。Sun公司甚至提出了“Java+XML=可移
描述性。XML文档自包含结构,使得系统间交换的
植代码+可移植数据”的口号,事实上,Java与XML
信息可以互相“了解”。不仅如此,XML数据独立于
的有机结合构成了一个完全的跨平台解决方案。
软硬件环境,能够跨平台发布。XML的这些特点特
在Java中。有一种非常经典的设计模式MVC[引。
别适合描述复杂的图形及图形间的关系。
MVC设计模式在Stmlltalk.80的GUI设计中于20世纪7o
—
个XML文档要求结构良好(wel1.formed)。这
年代被提出。MVC将数据和数据处理利用控制器将其
项指标的含义是在XML文档中,每一个打开的标签
分离开来。并且MVC也描述了不同部分的对象问的通
都必须有与之相匹配的结束标签,不得有次序颠倒的
信方式,使他们不被卷入彼此的数据模型和方法中,使
标签,而且在语句构成上应符合技术要求;第二项指
程序变得非常清晰和灵活。如图l所示。
标有效性是可选的,其功能是为XML文档定义语法
其中,MVC各部分的含义是:
和标签集。通常来说,可有两种手段:DTD和
Model:代表与问题相关数据的逻辑抽象,表示对
Schema口
象的内在属性。
一
个XML文档在一个系统中要起的作用,必须
View:表示模型的外在表现,一个模型可以对应
有一个相应的API来解析。目前这样API体系有很
一
个或多个视图,如图形用户界面视图、命令视图等。
多,主要有SAX、DOS和JDOM。其中SAX是基于事 视图负责与用户进行交互,并为外界提供输入手段以
件的,DOS将整个XML文档读入内存,数据储存成
及将程序运行结果以适当的形式显示给外界。
一
棵树的相应节点中,JDOM是基于Java2的一种操
Controler:代表模型与视图相联系的纽带,控制
收稿日期:2006-01.18
作者简介:莫佳(1977.)。男,四川广元人。华东交通大学信息工程学院讲师。硕士。研究方向:计算机应用。电子商务。
维普资讯
计算机与现代化 2OO6年第12期
器提取通过视图传输进来的外部信息,并将用户与视
图的交互转换为标准业务事件,再将事件解析为模型
应执行的动作。同时,模型的更新与修改也将通过控
制器通知视图以确保各个视图与模型的一致性。
模型(Mode)f
责分析来自用户的绘图命令,而将真正的绘图工作交
给Drawer完成,如图3所示。
流程图最终以XML文档进行保存,这不仅便于
图形数据的交换而且使得文件的大小大大减小。
封装应用状态I・
2基于XML的流程图绘制器的实现
针对程序三种不同的控制结构而制定出相应的
Schema是实现的关键之一。定义基于XML的图形数
据格式主要有两点:一是制定该行业的一套标记,即
状l耋l逗…… 薰:I
通响应知程塑序图功改变l能I 最萎
询l变:
.
I_一皇
视圈(View)
控制器(Controller)
解释模型
定义应用程序行为
模型更新请求
用户行为映射为模型更新
发送用户输入给控制器
允许控制器选择视图
选择合适的视图响应
与功能一一对应
————+方法调用 …--+事件
图1 MVC架构模型
1基于XML的流程图绘制器的分析
与设计
19%年,Bohm和Jacopini证明了任何单入口、单
出口、没有死循环的程序都能用三种基本的控制结构
来构造,这三种基本控制结构是顺序、分支和循环[引。
据此,本流程图绘制器的主要绘图功能由如下四个部
分组成,如图2所示。
图2软件功能图
从图2可知,程序的不同控制结构分别由相应的
模块进行绘制,最后由组装模块负责组装。
该流程图绘制器采用改进的MVC设计模式。传
统的MVC模型只是从概念上将视图从流程控制、业
务逻辑独立出来,并定义了相互间作用的机制,使各
I f:L
.
匹回———_!—_-J L匡 回————T—L—]__——一L囤——『-一L囤 —_r一
: : ; ; ; ;
¨ndCmd(-)1-1cmm -Bn.Ivl_cmd:.) : ; ;
化-硼a ・ 叫am
图3 程图绘制时序图
个模块的开发相对独立。在该结构中,将XML映射
为数据模型(?/,odd),并用辅助类Helper封装XML的
读写操作。该HeII=: 类利用基于Java的Apache的
Xerces解析器在流程图的%hema的配合下完成绘图
数据的XML持久。其中,Cont ̄.1ar是控制类,主要负
Schema;二是根据Schema书写格式良好、有效的XML
文档[4l。图形数据xML文档的Schema应该做到以
下几点:
(1)数据的完整性,即数据描述能够完全反映图
形的几何定义,不丢失图形信息。
(2)数据的独立性,即数据描述不依赖任何软硬
件环境,不涉及外界软硬件环境信息。
依据上述的设计原则,分别对三种基本的控制结构
进行Schema定义和XML文档的创建。值得注意的是,
Ⅺ也文档是程序根据用户最终图形的绘制并通过相应
Schema的验证自动创建的,本文将给出实例。
1.顺序结构。
顺序结构主要由流程线和处理框构成,如图4所
示。可以看出。图元(char ̄eta)是流程图(flowchart)最
基本的构成单位,一幅流程图由若干个图元组成。在
顺序结构中,图元由系列流程线(1ine)和系列处理框
(rec)组合而成。
匝 @ 詈
图4顺序结构的Schema示意图
图4所对应的主要Schema代码如下:
<x8:dement na】 = tlowchar ̄'>
<x8:complexType>
<x8:8eq1 ̄nc8>
<】【8:denmr ̄ref=”chartmc ̄a"maxOecurs= unbounded"/>
</xs:sequence>
</XS:complexType>
</xs:ebment>
<Y,S:dement na】 = cha_rtmeta">
<xs;complexType>
<x8:choice>
<】【8: I伽DeI吐mr= >
<xs:dement ref= mop"/>
</xs:choice>
<:attribute Ila鹏= id'type=”x8: u砷= required"/>
<xs:aRtib ̄勰= type=%..sai ̄'哪= 彬>
</xs:complexType>
</xs:e]eanent>
从上述代码可以看出,每一个图元都必须有一个
维普资讯
2OO6年第12期 莫佳:x池在Java图形中的应用 67
唯一的编号(id)。本流程图绘制软件规定图元的编号
由六位组成,顺序、分支以及循环结构的前三位分别
是:101、102和103。图元的编号对于流程图的组装很
重要,因为组装模块就是利用图元编号进行组装的。
图7是某一用户利用该软件所绘流程图的顺序
结构部分,其XML的主要代码如下所示。
<charuneta id=”101001 des= null">
<llnep)
(1ine xl 4s9 yl= 37"x2="459"y2= 8,>
</llnep>
</chartmem>
<cIlanll山id=”10100 des=”null">
<reep>
‘他e x="423"Y="77 width; 1 height= 8,>
</reep>
</chartmem>
<ch日r嘶eIa id= 10100B,,des= nulltl>
<llnep>
‘line xl= 457 yl=H103"x2= 蝴 y2= 125 />
</llnep>
</chartmem>
<chartmeta id= 10100 des=”null">
<reep>
<陀e x="424"Y=”125 width: 69"hei出= 25 />
</1 ̄ep>
</c ̄rtraeta>
<ch ̄-tmem id=”1010o5,,des=”null">
<llnep>
<line xl="456"yl=”15 x2="456"y2=”17#'/>
</linep>
</chartmem>
2.分支结构。 ’
分支结构表示判断。为了节约篇幅,这里仅给出
相应的Schema示意图、Schema源码和分支结构效果
图,而Ⅻ吼文档源码从略。如图5和图8所示。
图5分支结构的Sche1.rIa示意图
在分支结构中,用菱形(rhombus)表示判断,其主
要Schema代码如下:
<x8:ele ̄nent naII =”chltlt ̄ta#>
<x8:comple ̄e>
<x8:choice>
<x8:element ret'=”llne ̄/>
<x8:element ref= rhombmp"/>
<x8:element ref= r。c />
</x8:choice>
<)c8:attribute眦Tle=”if'type;” ̄:IIY use= 唧i />
<x8:础曲I吐e l眦:,,d type= : u吕e= 瓜 />
</xs,eomplex ̄e>
.
</x8:element>
<x8:dement咖le=”rhombus">
<x8: 积 rype>
< :attribute naIlle= xl type= x8:l0I use:”required"/>
< :attribute咖le; yl type= xs:10n use=”re( I />
< :attribute name= x2"type=  ̄:long'use=”re( />
<x8:m仃ih吐e l眦之 type= :h u8e= />
<x8:a bute nanle= x3 type=”xB:l r use=”re( Ie【 />
< :attribute name=”y3 type=”x8:l use=”re( />
<:attribute name= type= 鹧:lo use=”reqI1i />
< :attribute naIlle= y4"type=”x8:l0I use= required"/>
</x8:c0叫 卿>
</x8:dement>
<:ele ̄nent咖le= r}l0l】 >
<x8:eomplexType>
<x8:seqllell ̄>
<.dement ref=  ̄ombus"/>
</x8:sequ l傥>
</x8: exType>
</x8:dement>
其中,判断框的主要属性有四个顶点的坐标:
(xl,y1)、()(2,y2)、()【3,y3)和(x4,y4)。
3.循环结构(以do.while循环为例)。
图6 循环结构的Schema示意图
循环结构表示程序重复的做某一操作。Schema
定义和循环结构效果图如图6和图9所示。Schema
的定义以及 几文档的生成都与顺序结构和分支结
构同理,在此不再赘述。
图7顺序结构效果图图8分支结构效果图
3结束语
本文以流程图绘制软件为实例说明x池技术在
图形处理中的应用,主要阐述采用 几技术表示、存
储流程图数据的方法。采用XML技术表示图形数据
的显著优点是文件小,并且与平台无关,因而很适合
维普资讯
68 计算机与现代化 2006年第l2期
属性(虽然几何属性对于图形的绘制与显示也是很重
要的)。另外,XML文件是文本文件,对用户而言是
可见的,用户有意无意对这个文本文件的修改均会导
致解析的失败,因而软件的健壮性有待进一步提高。
因此需要进一步研究流程图图元之间关系的更有效
的XML表示以及XML的安全性。
参考文献:
[1 J齐冶昱.谭庆平,宁洪.软件工程[M].北京:高等教育出
版社,2004.
在网上传输与交换。但流程图与其它的图形有
[2] Sm蛐咖咖,h .№ -Vie cdm k[DB/0L].hap://
很大的不同,体现在流程图主要关心图形所代表的业
扣lIIa.蛐.∞n/ I由 曲 e 蜘 iId臼【.html,∞
1 31.
务逻辑以及逻辑之间的关系,而非流程图本身的几何
[3] 王春森.系统设计师教程[M].北京:清华大学出版社,2001.
[4]蔡尊德,林焰,纪卓尚.基于XML的图形数据接口研究[J].计
算机工程. ,3o(14).
.
, . ̄.,’、.,’、.,’、.. ’ .,’、.,’~.,。、.. 。 。、,。 ,。、, 、. 。...一.’ ̄.. 。~.. ’~.. ’ . ..... ‘ ̄.. ‘ ̄.. 。 ,。、. ‘. ̄.,。、.,。、., ̄. _...,。・~ ’ 。、.,。 .,。 .,。 .,....,。、,、. 、..,、.. 、.. 。、.,。、.,‘、,。-.. ‘、.,’、 。、
(上接第64页)
6.按式(5)计算c,若c足够/b(设置—个阈值)转7,否则按共
4结束语
轭梯度法计算c关于取 的梯度共轭方向的最优迭代增量取△ ,
本文采用先计算射影矩阵,然后构建测量矩阵并
将取 + 一 返回5继续迭代;
对其进行奇异值分解(SVD),通过共轭梯度法极小化
^ ^
7.得蛰恰遁射髟深度,进行分懈得Q币日Lo
从第7个以后的奇异值获得射影深度,通过求解变换
8.应用变换H得到重建结果。
H,从局部重建到最后实现空间物体直线的重构。实
3实验结果
验结果表明,本文方法切实可行。
为了验证本文方法,选择如图2所示的室内图像
序列进行直线匹配,匹配结果如图3所示,采用本文
方法进行直线重建获得重构物的结构,然后贴上纹
参考文献: t
理,最后得到重建结果如图4所示。
[1]DMartinee,T Pajdla.Outlier如 forfaetotization based
reconstruction from pmp ̄tiw imageB with oeelusiom【J].
0o蜘0fthePcv,2002,B:161-164.
[2]马颂德,张正友.计算机视觉—计算理论与算法基础
[枷.北京:科学出版社,1998.
图2室内图像序列(图像序列中的三幅)
[3]R Hartley,A Zisseanan.Mdtiph View Ge咖in Computer
Vision[M].caIIlb University Press,200o.
[4]梁栋,韦穗,吴福朝,杨尚俊.一种基于奇异值分解的分
层重构算法[J].中国科学技术大学学报,2001,31(5):
571.576.
图3直线匹配结果
[5]Faugeras O。Mourrain B.Onthe geometry and alg ofpoint
and llne oorrespondemes between i瑚 [A].Proceedings of
the 5th International Conference on C_,ompute ̄Vision[C].
199l5.951.g62.
图4图像序列重建结果(贴纹理)
版权声明:本文标题:XML在Java图形中的应用 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.roclinux.cn/p/1713576152a641548.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论