一种基于AS的XML脚本解析器及其方法
技术领域
本发明涉及一种脚本解析器及其方法,更具体地说是指一种基于AS的XML脚本解析器及其方法。
背景技术
XML是W3C定的一组规范,用来定义文档标记语言的框架。它提供了一种描述结构数据的格式,使各种基于WEB的应用之间能方便的交换数据。XML以简单性、开放性、可扩展性、互操作性等一系列特性给基于Web的应用程序带来了强大的功能和灵活性。而XML文件只是以纯文本对数据进行编码的一种格式,使用XML文件中所编码的数据之前,必须先将数据从纯文本中解析出来。因此,XML解析器在信息系统的构建过程中十分重要。
目前,广泛使用的XML解析器主要是IBM公司的XML 4J,Microsoft公司的MS XML,Oracle公司的XMLParser for Java和S UN公司的ProjectX。由于上述XML解析器的交互能力差,其未能满足企业实际的应用需求。
发明内容
本发明的目的在于克服现有技术的缺陷,提供一种基于AS的XML脚本解析器及其方法。
为实现上述目的,本发明采用以下技术方案:
一种基于AS的XML脚本解析器,包括与外部资源连接的程序构件,所述的程序构件包括XML解析器、脚本加载器、解释器、执行器、事件管理器和对象实体;所述的外部资源与解释器、执行器连接,解释器、执行器对外部资源进行转换;其中,脚本加载器对XML脚本进行加载并传送至XML解析器,XML解析器对XML脚本进行解析后,并生成解释器所需的对象;所述的对象实体包括应用空间和图形界面,其中:所述的脚本加载器是主要用于加载XML脚本;所述的XML解析器是指AS内置的XML解析器;用于解析XML脚本,并生成解释器所需的对象;所述的解释器是以XML解析器所生成的对象为输入负责对语句解释执行控制;所述的执行器是用于根据对象或命令的类型调用相应的处理模块。其中,AS是指ActionScript,一种编程语言。
其进一步技术方案为:还包括初始化器,所述的初始化器是根据配置文件对对象实体进行初始化。
其进一步技术方案为:所述的外部资源包括与解释器连接的AS基类、对象库、指令集、布局规则;所述的AS基类是指AS提供的基础类;所述的对象库是指根据富互联网应用程序技术预制的UI集(例如:文本框、密码编辑框、多选树型列表、时间选择器等,可根据需求定制),提供了自定义的XML脚本语法支持(例如:应用控件定义为<ui type="APP"img="*"caption="*"cmd="*"/>,type为控件类型,img为图标文件,caption为标题,cmd为响应命令);所述的指令集是根据系统的需求自定义的命令集(例如:OPEN、CLOSE、URL、SM7等,命令可根据需求进行扩展,命令和命令参数之间用特殊符号隔开,本实施例中,命令和命令参数之间的分隔符为冒号,命令参数和命令参数之间的分隔符是|,即命令类型:参数1|参数2|....);所述的布局规则主要是规定了应用布局的方式。
其进一步技术方案为:所述的外部资源还包括与执行器连接的外部组件、资源文件和容器接口;所述的外部组件是根据富互联网应用程序技术预制的组件集;所述的资源文件是指引擎使用的任意非可执行的数据文件,如图像、音频和视频文件;所述的容器接口是指引擎跟装载引擎容器的通信接口。
其进一步技术方案为:所述的应用空间是指由引擎根据XML脚本生成的应用集。
其进一步技术方案为:所述的事件管理器主要是负责对应用空间的事件或动作进行监听、响应,并触发执行器执行相应的命令。
一种基于AS的XML脚本解析方法,包括以下步骤:
1)初始化:根据配置文件对应用进行初始化,在初始化完成之后,不断对该应用进行监听,以至能及时响应用户的操作;
2)事件响应:用户通过图形界面对应用进行操作,并触发相应的事件,事件管理器在捕捉到该事件后对其进行响应,并触发执行器执行相应的命令;
3)命令解释:解释器会根据预制的对象库、指令集和布局规则判断该命令的类型,然后触发执行器执行相应的处理模块,在此过程中,解释器负责对命令解释执行控制;
4)命令执行:执行器会根据解释器传过来的信息调用相应的模块进行处理;
5)脚本加载:根据执行器发过来的请求,脚本加载器加载相应的脚本传给XML解析器;
6)XML解析:XML解析器对脚本加载器传过来的脚本进行解析,并根据XML语言的语法规则生成相应的对象;检测各个端口,若有结束控制信号输入时,进入步骤7),否则,重复步骤2);
7)结束。
其中的步骤4):
若是以APP开头的命令,执行器执行对象处理模块;
若是OPEN、CLOSE、URL:等开头的命令,执行器调用命令处理模块进行处理;
若是需要加载XML脚本,执行器会触发脚本加载器加载相应的XML脚本;
若是调用其他的命令,执行器会触发解释器对该命令进行解释,从而形成循环调用;同时,命令执行器会根据解释器传过来的信息,结合外部组件和资源文件生成相应的应用存储到应用空间里。
本发明与现有技术相比的有益效果是:1)通过对XML脚本的解析实现应用程序动态加载,使用户可以以文本编程方式实现富互联网应用;2)是通过事件驱动来识别XML文档的内容(即当它在XML脚本中发现特殊符号时,它就会触发相关事件,不需要在内存中建立整个文档的树结构),其占用内存较少,从而使其更加适合应用于智能手机、平板电脑、嵌入式设备等客户端;3)可重用性,能够提高软件的开发效率;4)是基于AS开发的,其具有较强的互动能力,能够提高系统的响应能力。
下面结合附图和具体实施例对本发明作进一步描述。
附图说明
图1为本发明一种基于AS的XML脚本解析器具体实施例的方框结构示意图;
图2为本发明一种基于AS的XML脚本解析方法对某一具体控件进行解析之后的应用空间的显示示意图。
具体实施方式
为了更充分理解本发明的技术内容,下面结合具体实施例对本发明的技术方案进一步介绍和说明,但不局限于此。
如图1所示,本发明一种基于AS的XML脚本解析器,包括外部资源和程序构件两大部分,所述的外部资源包括、AS基类、对象库、指令集、布局规则、外部组件、资源文件和容器接口,其中:XML脚本主要是为脚本引擎提供数据,同时作为脚本引擎和后台的接口。AS基类是指AS提供的基础类。对象库是指根据富互联网应用程序技术预制的UI集,提供了自定义的XML脚本语法支持。指令集是根据系统的需求自定义的命令集。布局规则主要是规定了应用布局的方式。外部组件是根据富互联网应用程序技术预制的组件集。资源文件是指引擎使用的任意非可执行的数据文件,如图像、音频和视频文件。容器接口是指引擎跟装载引擎容器的通信接口,例如:引擎与浏览器的接口、引擎与桌面程序的接口。程序构件包括初始化器、XML解析器、脚本加载器、解释器、执行器、事件管理器和对象实体,在本引擎中程序构件主要是根据XML脚本动态生成最终显示需要的信息。初始化器主要是根据配置文件对应用程序进行初始化。脚本加载器是主要用于加载XML脚本。XML解析器是指AS内置的XML解析器。在本引擎中,其主要用于解析XML脚本,并生成解释器所需的对象。解释器主要是以XML解析器所生成的对象为输入负责对语句解释执行控制,是整个脚本引擎的中心模块。执行器主要是用于根据对象或命令的类型调用相应的处理模块。事件管理器主要是负责对应用空间的事件或动作进行监听、响应,并触发执行器执行相应的命令。应用空间是指由引擎根据XML脚本生成的应用集。
本解析器可以作为浏览器的插件,也可以作为桌面应用软件的插件。
本解析器的解析方法包括以下几个步骤:
1)初始化:根据配置文件对应用进行初始化,在初始化完成之后,不断对该应用进行监听,以至能及时响应用户的操作。
2)事件响应:用户通过图形界面对应用进行操作,并触发相应的事件。事件管理器在捕捉到该事件后对其进行响应,并触发执行器执行相应的命令。
3)命令解释:解释器会根据预制的对象库、指令集和布局规则判断该命令的类型,然后触发执行器执行相应的处理模块。在此过程中,解释器负责对命令解释执行控制。
4)命令执行:执行器会根据解释器传过来的信息调用相应的模块进行处理。例如:如果是以APP开头的命令,执行器执行对象处理模块;如果以OPEN、CLOSE、URL:等开头的命令,执行器调用命令处理模块进行处理。在执行器执行命令过程中,该命令可能会需要加载XML脚本或调用其他的命令。如果是需要加载XML脚本,执行器会触发脚本加载器加载相应的XML脚本;如果是调用其他的命令,执行器会触发解释器对该命令进行解释,从而形成循环调用。同时,命令执行器会根据解释器传过来的信息,结合外部组件和资源文件生成相应的应用存储到应用空间里。
5)脚本加载:根据执行器发过来的请求,脚本加载器加载相应的脚本传给XML解析器。
6)XML解析:XML解析器对脚本加载器传过来的脚本进行解析,并根据XML语言的语法规则生成相应的对象;检测各个端口,若有结束控制信号输入时,进入步骤7),否则,重复步骤2)。
7)结束。
下述为一个具体控件的解析实施例:
DataGrid.xml为DataGrid控件的配置文件;
本实施例主要是以解析器解析一个DataGrid控件过程来说明,而所述的DataGrid控件指的是本文中所说的对象库里面的对象,以下是解析的步骤:
1.解析器调用脚本加载器加载DataGrid.xml文件;
2.XML解析器对脚本加载器传过来的脚本进行解析,即相关数据赋给相对应的对象,如将type、src、height、name和cw的值赋给DataGrid对象;
3.解释器将读取对象的信息进行解释,例如解释器会根据预制的对象库、指令集和布局规则对DataGrid对象的type、src、height、name、check和cw的值进行解析,即DataGrid对象类型type为DataGrid控件,外部资源src为swf/HD_DATAGRID.swf,高度height为400,名字name为uname,校验规则check为[*],列宽度cw分别为1,1.5,1,3。该控件有9列和一条记录,列名分别为CHK、ID、姓名、类型、图片、添加、修改、删除和查看。该记录的CHK值为201,ID为1,姓名为实施例,类型为7,图片为images/ico_001.png,添加的响应命令为"OPEN:P,gui/frameB.xml",修改的响应命令为"URL:gui/form_01.xml",删除响应命令为"URL:gui/form_01.xml",查看的响应命令为URL:gui/form_01.xml;解释器在对相关对象解析完之后,将相应的数据发给执行器;
4.执行器根据解释器传过来的信息,加载外部组件HD_DATAGRID.swf和资源文件ico_001.png,并生成相应的应用存储到应用空间里,解析器会根据应用空间的信息将应用显示出来,如图2所示;
5.如果用户点击确定,事件管理器捕捉到命令CHECK_FORM,执行器将会通过容器接口向WEB服务器发出请求,并将该控件的数据提交给WEB服务器处理。当用户点击DataGrid控件中的添加、修改、删除和查看时,会触发事件管理器捕捉相对应的命令,例如点击添加,事件管理器捕捉到的命令是OPEN:P,gui/frameB.xml;
6.解析器根据预制的指令集判断出该命令为打开窗口,并在该窗口加载frameB.xml的内容;
7.执行器执行该命令,并触发脚本加载器加装脚本frameB.xml;
8.解析器解析脚本frameB.xml的过程可参考步骤1-4,其他命令的执行可参考步骤5-8;
在这过程中,解析器不断监控应用,以及时响应用户的操作,直到程序关闭。
上述仅以实施例来进一步说明本发明的技术内容,以便于读者更容易理解,但不代表本发明的实施方式仅限于此,任何依本发明所做的技术延伸或再创造,均受本发明的保护。本发明的保护范围以权利要求书为准。