以XML文件存储配置数据的技术实现,c++

一般新手通常只是使用类似的Xerces, TinyXML之类的XML解析xml,这种方式实际上很浪费时间,自己编写很多代码也容易出错。因为,他们经常要写一个XML对象Entity的类,并附着一堆对象解析的code。工作量比较大。使用XML Schema工具,XSD设计工具,然后通过工具生成EntityClass和Paser class。我不知道这种技术确切的起源时间,但是我知道这种用法用法已经被使用有7、8年了吧。以前写程序,用INI保存配置数据,数据类型还要自己定义,当然也要写一堆的code去解析。

这里推荐的思路是:设计XML Schema,然后使用工具自动生成代码,编写简单的接口供上层App调用。虽然这种XML保存配置数据的方式保密性不好,但是我们假设有一天XML schema可以直接转换成某一种数据库schema,将配置数据保存到数据库中并依赖数据加密机制保证数据的安全性。这是后话,暂且放放吧。

设计XML Schema的工具有:MS XML tool, XSD from http://wiki.codesynthesis.com/Using_XSD_with_Microsoft_Visual_Studio , 还有很多商业工具,如XMLSpy, Oxygen XML Editor.

codesynthesis XSD 是一个开源的工具,来自Berkeley, 从编译选项看,支持wchar *, 但是通过实践和测试,不能很好得读取包含非ASCII码的文件。如果让应用程序支持_unicode选项的话,会有compiling error.来自 XSD lib的 print函数。匪夷所思。可能人家不需要读取别国文字吧。

XMLspy 2009 功能很强大,可以设计XML schema, 可以转换DB Schema=> XML Schema, 可以帮你生成一个XML文件,可以根据 XML Schema生成 Java/C++/C# 代码,包括Entity Class, 存取机制甚至测试代码。有一点比较值得称赞就是:在生成代码的前,它让你选择选择XML access library, 如MS XML,or Xerces。如图:

以XML文件存储配置数据的技术实现,c++_第1张图片

如果选择 Xerces,  默认情况下,产生的代码是Xerces_2 系列的。如果你使用的是Xerces_3系列的话,对不起有编译错误,因为Interface 在从Xerces2到升级的时候被改写了。

当然,XMLSpy生成的代码也是支持跨平台的,只需要添加一些make file即可。XMLSpy生成的代码也是支持非ASCII文字的,在编译前填加_MBCS到project setting中,并将你的XMLfile保存成UTF-8格式。注意我们这里根本就没有提起_unicode或者Unicode. 我这里不说具体原因了。自己体会吧。

Oxygen XML Editor

我这里为什么会提起他呢?主要原因是,我想将一些存储在数据库的表及数据convert到XML中。我使用的是PostgreSQL数据库,Oxygen XML Editor支持的接口是JDBC for PostgreSQL. 下载了一个版本,居然可以用。不错。

其实以上的功能XMLspy也有,而且支持的数据库还比较多,多是以ODBC为接口,所以通用性也好。Oxygen XML Editor不能根据XML Schema生成Java/C++ code。

 

你可能感兴趣的:(Enhance,VC++/C++,xml,存储,schema,数据库,postgresql,工具)