以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。如图:
如果选择 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
相关文档:
[
摘要]
指针是
C和
C++语言编程中最重要的概念之一,也是最容易产生困惑并导致程序出错的问题之一。利用指针编程可以表示各种数据结构
, 通过指针可使用主调函数和被调函数之间共享变量或数据结构,便于实现双向数据通讯;并能像汇编语言一样处理内存地址,从而编出精练而高效的程序。指针极大地丰富了 ......
如何在VC环境下编写程序读取XML文件?清提供源代码.谢谢.
#import <msxml3.dll> named_guids //导入动态库,装了IE5就有
using namespace MSXML2; //引用命名空间,一般可以把命名空间理解成类和接口的集合,呵呵,对不对我也不知道了
#include <vector>
using na ......
通过前面两篇,相信大家已经基本了解了我们的研究思路。既然是研究,那么必须的研究工具就得熟练掌握了。这里我所指的研究工具就是VC,我所使用的VC版本是2005。本文也将根据VC2005进行探讨。可能很多朋友或者初学者还是使用的VC6.0。在这里本人不推荐使用VC6.0。原因很简单,VC6.0已经过时了,后面的版本比VC6.0更强大方便 ......
一、保存到XML文件
//得到用户要上传的文件名
string strFilePathName = loFile.PostedFile.FileName;
string strFileName = Path.GetFileName(strFilePathName);
int FileLength = loFile.PostedFile.ContentLength;
if(FileLength<=0)
return; ......
XML 命名空间提供了一种避免元素命名冲突的方法。
命名空间属性一般放置在元素的开始标记处,其使用语法如下所示:
xmlns:namespace-prefix="namespace",
例如:xmlns:f="http://www.w3schools.com/furniture"
W3C 命名规范声明命名空间本身就是一个统一资源标示符,Uniform Resource Identifier (URI)。
asp.net读取X ......