本人正在研究XMLSpy的二次开发,首先简单地说一下XMLSpy,XMLSpy是符合行业标准的XML开发环境,专门用于设计,编辑和调试企业级的应用程序,包括XML,XML Schema,XSL/XSLT,SOAP,WSDL和互联网服务技术。 其实XMLSpy的功能已经做的很强大了,那么为什么还要进行二次开发呢,这个可能因人而异,不同的人有不同的需求,我做这件事是为了通过研究已有的功能以及新增的功能,将这种研究思路或方法及功能应用到自己的东西中,或者仿照这个做出类似的工具。如果有研究这方面的朋友,大家可以一起交流一下哈。
下面简单地介绍一下目前做过的工作。主要参考XMLSpy的用户手册。
1.软件二次开发
1.1软件二次开发定义
所谓软件二次开发是对已有软件产品的功能进行扩充或根据特殊需要组合扩展功能等。
一般支持软件二次开发的原软件系统都提供相应的SDK(Software develop kit)。二次开发人员可以根据SDK中提供的公开的API(应用程序接口)来访问软件原有的一些基本功能,并根据这些基本功能组合,扩展进而形成更加专业或新的功能以完成用户特殊的需求。
2. Application API
XMLSpy中基于COM组件的API,可以使其它的应用程序使用XMLSpy的功能,同时可以在内置的脚本编辑器中使用Application API编写脚本,也可以在IDE Plugins中使用。
XMLSpy和它的Application API遵循由微软制定的公共规范,因此可以从一些开发环境中访问它的属性和方法,比如使用C,C++,Delphi及脚本语言。
2.1 对象模型
图1-1 主要对象模型及其关系
2.2 接口
Application
SpyProject
SpyProjectItems
SpyProjectItem
Documents
Document
GridView
AuthenticView
AuthenticRange
AuthenticDataTransfer
OldAuthenticView
AuthenticSelection
AuthenticEvent
AuthenticDataTransfer
TextView
XMLData
Dialogs
CodeGeneratorDlg
FileSelectionDlg
SchemaDocumentationDlg
GenerateSampleXMLDlg
DTDSchemaGeneratorDlg
FindInFilesDlg
WSDLDocumentationDlg
WSDL20DocumentationDlg
XBRLDocumentationDlg
DatabaseConnection
ExportSettings
TextImportExportSettings
ElementList
ElementListItem
3.XMLSpy开发方法
XMLSpy虽然不是开源的软件,但是它提供了几种二次开发的方式法,这几种方法本质上是一样的。XMLSpy2011用户手册中提供了三种形式的开发方法,分别为Scripting, Plugins, Application API for Java。
3.1 Scripting开发方法
3.1.1 关于Scripting介绍
在XMLSpy中提供一个内置脚本编辑器(Scripting Editor),在脚本编辑器中可以使用Microsoft.NET Framework的组件,也可以通过JScript和VBScript使用XMLSpy API和Microsoft.NET framework类,最终可以在菜单中生成一个菜单项。
3.1.2创建Scripting工程
在XMLSpy中创建一个Scripting Projects,保存扩展名为asprj的文件。在该文件中可以编写Global Declarations, Forms, Events, and Macros。(示例代码:MyScriptingProject.asprj)
3.2 Plugins开发方法
3.2.1 关于Plugins介绍
XMLSpy中允许用户在XMLSpy中开发自己的IDE plugins来增加新的功能,这些插件要实现IXMLSpyPlugIn接口。(示例代码:IXMLSpyPlugIn)
3.2.2 创建Plugins工程
1)使用ATL创建一个简单的XMLSpy IDE插件DLL。
2)在VS中附加进程xmlspy.exe。
3)在XMLSpy中添加该DLL插件。
3.3 Application API for Java
3.3.1关于Application API for Java的介绍
Application API for Java建立了Java类的接口,其中每一个接口对应 Application API中的一个对象。开发人员可以使用这些Java 类与COM API进行交互。
3.3.2 Java 类
SpyApplication
SpyProject
SpyProjectItems
SpyProjectItem
SpyDocuments
SpyDoc
SpyAuthenticView
SpyAuthenticRange
SpyDocEditView
SpyDocEditSelection
SpyGridView
SpyTextView
SpyXMLData
SpyDialogs
SpyCodeGeneratorDlg
SpyDTDSchemaGeneratorDlg
SpyFileSelectionDlg
SpyFindInFilesDlg
SpyGenerateSampleXMLDlg
SpySchemaDocumentationDlg
SpyWSDL20DocumentationDlg
SpyWSDLDocumentationDlg
SpyXBRLDocumentationDlg
SpyDatabaseConnection
SpyElementList
SpyElementListItem
SpyExportSettings
SpyFindInFilesResults
SpyFindInFilesResult
SpyFindInFilesMatch
SpyTextImportExportSettings
3.3.3 创建工程
在编码前需要注意以下事项:XmlSpyLib.dll需要放在system32文件夹中;需要XMLSpyInterface.jar包;在classpath的环境变量中需要指出XMLSpyInterface.jar包所在的路径。(示例代码:TestSpyInterface)
注:如果需要示例代码的可以给我留言。