用XML文件保存应用程序的配置信息
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
(Fujian Economic Information Center,Fuzhou 350003) Abs tra ct:As XML is being used widely in cross- platform data exchange technology,more and more softwares are using XML files as their configuration files.This article illustrates the whole implementation procedure of storing con- figuration informations of application into a XML file,based on an example developed by C++Builder. Ke y words :XML;configuration files;TXMLDocument component
应用程序往往需要将与程序运行相关的配置信 息保存下来, 当下一次程序启动时, 可以根据上一次 保存的配置信息来自动配置程序的运行参数, 而无需 重新配置。配置信息的保存可以有许多种办法, 如保 存 在 数 据 库 中 、保 存 在 注 册 表 中 、保 存 在 文 本 文 件 中 , 等等。随着 XML 在跨平台数据交换技术中的广泛应 用, 越来越多的自由软件或商业软件采用 XML 文件 作为配置文件的形式。本文介绍在 C++Builder 开 发 的应用程序中, 如何将配置信息保存在 XML 文件中。
C++Builder6 支持对 XML 文档的操作, 可以通过 TXMLDocument 类来实现对 XML 文档的读写。利用 TXMLDocument 把 XML 文档读到内存中, 从而可以 进 行 编 辑 、 保 存 等 操 作 。TXMLDocument 类 是 通 过 DOM( 文档对象模型) 接口来访问 XML 文档中的各个 元 素 的 。 对 于 DOM 接 口 的 实 现 有 多 种 方 式 , C++ Builder6 支持的方式有: 1)微软 的 MSXML SDK, 这种 方式是通过 COM 对象来实现; 2) Apache 的 Xerces 的 实现方式; 3)另外一种是开源 OpenXML 实现方式。对 于 不 同 的 接 口 实 现 方 式 可 以 通 过 设 定 TXMLDocu- ment 的 DOMVender 来进行控制。
[WideString("MonitorPort")]- >Text = EdtMonitorPort- >Text; XMLCurrentNode - >ChildNodes - >Nodes
1 建立一个 config.xml 文件, 用来保存配 置信息的初始值, 文件内容如下:
<xml version="1.0" encoding="GB2312"> <系统配置> <MonitorID desc="监控号">09</MonitorID> <MonitorPort desc="监控听端口">5444</Monitor- Port> <ListenPort desc="接受监控信息的端口">5001</ ListenPort> <TimeInterval desc=" 每次取记录的时间间隔( 毫 秒) ">1000</TimeInterval> <MaxFetchNumber desc=" 每次取 最大记 录数 ( 0 表示无限制) ">0</MaxFetchNumber> </系统配置>
本栏目责任编辑: 谢媛媛
如果存在 config.xml, 从该文件中读取配置信息 XMLDocument1- >FileName = "config.xml"; } else { // 如果不存在 config.xml 配置文件, 新建一个 XMLDocument1- >XML- >Add("<?xml version=\"1.0\" encoding=\"GB2312\"?>"); XMLDocument1- >XML- >Add("<系统配置>"); XMLDocument1- >XML- >Add("</系统配置>"); XMLDocument1- >Active = true; XMLDocument1- >SaveToFile("config.xml"); XMLDocument1- >Active = false; XMLDocument1- >FileName = "config.xml"; } XMLDocument1- >Active = true; ConfigDataShow(); } //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - void __fastcall TConfigForm::BtnModiClick(TObject *Sender) { EdtTimeInterval- >Enabled = true; EdtMaxFetchNumber- >Enabled = true; EdtMonitorID- >Enabled = true; EdtMonitorPort- >Enabled = true; EdtListenPort- >Enabled = true; BtnModi- >Enabled = false; BtnSave- >Enabled = true; BtnUndo- >Enabled = true; BtnExit- >Enabled = false; } //自定义函数, 用于显示配置信息 void __fastcall TConfigForm::ConfigDataShow() { _di_IXMLNode XMLCurrentNode; EdtTimeInterval- >Enabled = false; EdtMaxFetchNumber- >Enabled = false; EdtMonitorID- >Enabled = false; EdtMonitorPort- >Enabled = false; EdtListenPort- >Enabled = false; XMLCurrentNode = XMLDocument1 - >Docu- mentElement; EdtTimeInterval- >Text = XMLCurrentNode - >ChildNodes - >Nodes [WideString("TimeInterval")]- >Text; EdtMaxFetchNumber- >Text = XMLCurrentNode - >ChildNodes - >Nodes
本栏目责任编辑: 谢媛媛
[WideString("MaxFetchNumber")]- >Text; EdtMonitorID- >Text = XMLCurrentNode - >ChildNodes - >Nodes
[WideString("MonitorID")]- >Text; EdtMonitorPort- >Text = XMLCurrentNode - >ChildNodes - >Nodes
下面以笔者所开发项目中的一个实例来说明在 C++ Builder 中 将 配 置 信 息 保 存 在 XML 文 件 中 的 方
法。该项目中需要在 XML 文件中保存的配置信息有: 监 控 号 、监 控 程 序 听 端 口 、接 收 监 控 信 息 端 口 、取 数 据 库 记 录 的 时 间 间 隔 、每 次 所 取 最 大 记 录 数 。 设 计 步 骤 如下:
关键词: XML; 配置文件; TXMLDocument 组件 中图分类号: TP 311 文献标识码: A 文章编号: 1009- 3044(2008)02- 10295- 03
S tore Configura tion Informa tion of Applica tion by XML File s QIAN R en- feng
*Sender) {_di_IXMLNode XMLCurrentNode; XMLCurrentNode = XMLDocument1 - >Docu-
mentElement; XMLCurrentNode - >ChildNodes - >Nodes
[WideString("TimeInterval")]- >Text = EdtTimeInterval- >Text; XMLCurrentNode - >ChildNodes - >Nodes
本栏目责任编辑: 谢媛媛
软件设计开发
用 XML文件保存应用程序的配置信息
钱仁锋 ( 福建省经济信息中心, 福建 福州 350003)
摘要: 随着 XML 在跨平台数据交换技术中的广泛应用, 越来越多的软件采用 XML 文件作为配置文件的 形式。本文通过一个实例讲述在 C+ + Builder 中用 XML 文件保存应用程序的配置信息的实现过程。
295来自百度文库
软件设计开发
这些组件的主要属性设置如下表所示:
编写窗体 ConfigForm 的实现代码 Config.cpp 如下: #include <vcl.h> #pragma hdrstop #include "Config.h" //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - #pragma package(smart_init) #pragma resource "*.dfm" TConfigForm *ConfigForm; ///- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - __fastcall TConfigForm::TConfigForm(TComponent* Owner) : TForm(Owner) { } //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - void __fastcall TConfigForm::FormCreate (TObject *Sender) { if (FileExists("config.xml")) { 296 电脑知识与技术
[WideString("MonitorPort")]- >Text; EdtListenPort- >Text = XMLCurrentNode - >ChildNodes - >Nodes
[WideString("ListenPort")]- >Text; BtnModi- >Enabled = true; BtnSave- >Enabled = false; BtnUndo- >Enabled = false; BtnExit- >Enabled = true; } void __fastcall TConfigForm::BtnSaveClick(TObject
2 设计用来编辑配置信息的页面。
新建一个窗体, 在窗体上放置一个 TXMLDocu- ment、五个 TLabel、五个 TEdit、一个 TPanel、四个 TButton, 如下图所示:
收稿日期: 2007- 12- 10 作者简介: 钱仁锋, 福建省经济信息中心工程师, 熟悉数据库开发技术及 C/ C+ + 、JAVA 等开发语言。
[WideString("MaxFetchNumber")]- >Text = EdtMaxFetchNumber- >Text; XMLCurrentNode - >ChildNodes - >Nodes
[WideString("MonitorID")]- >Text = EdtMonitorID- >Text; XMLCurrentNode - >ChildNodes - >Nodes
应用程序往往需要将与程序运行相关的配置信 息保存下来, 当下一次程序启动时, 可以根据上一次 保存的配置信息来自动配置程序的运行参数, 而无需 重新配置。配置信息的保存可以有许多种办法, 如保 存 在 数 据 库 中 、保 存 在 注 册 表 中 、保 存 在 文 本 文 件 中 , 等等。随着 XML 在跨平台数据交换技术中的广泛应 用, 越来越多的自由软件或商业软件采用 XML 文件 作为配置文件的形式。本文介绍在 C++Builder 开 发 的应用程序中, 如何将配置信息保存在 XML 文件中。
C++Builder6 支持对 XML 文档的操作, 可以通过 TXMLDocument 类来实现对 XML 文档的读写。利用 TXMLDocument 把 XML 文档读到内存中, 从而可以 进 行 编 辑 、 保 存 等 操 作 。TXMLDocument 类 是 通 过 DOM( 文档对象模型) 接口来访问 XML 文档中的各个 元 素 的 。 对 于 DOM 接 口 的 实 现 有 多 种 方 式 , C++ Builder6 支持的方式有: 1)微软 的 MSXML SDK, 这种 方式是通过 COM 对象来实现; 2) Apache 的 Xerces 的 实现方式; 3)另外一种是开源 OpenXML 实现方式。对 于 不 同 的 接 口 实 现 方 式 可 以 通 过 设 定 TXMLDocu- ment 的 DOMVender 来进行控制。
[WideString("MonitorPort")]- >Text = EdtMonitorPort- >Text; XMLCurrentNode - >ChildNodes - >Nodes
1 建立一个 config.xml 文件, 用来保存配 置信息的初始值, 文件内容如下:
<xml version="1.0" encoding="GB2312"> <系统配置> <MonitorID desc="监控号">09</MonitorID> <MonitorPort desc="监控听端口">5444</Monitor- Port> <ListenPort desc="接受监控信息的端口">5001</ ListenPort> <TimeInterval desc=" 每次取记录的时间间隔( 毫 秒) ">1000</TimeInterval> <MaxFetchNumber desc=" 每次取 最大记 录数 ( 0 表示无限制) ">0</MaxFetchNumber> </系统配置>
本栏目责任编辑: 谢媛媛
如果存在 config.xml, 从该文件中读取配置信息 XMLDocument1- >FileName = "config.xml"; } else { // 如果不存在 config.xml 配置文件, 新建一个 XMLDocument1- >XML- >Add("<?xml version=\"1.0\" encoding=\"GB2312\"?>"); XMLDocument1- >XML- >Add("<系统配置>"); XMLDocument1- >XML- >Add("</系统配置>"); XMLDocument1- >Active = true; XMLDocument1- >SaveToFile("config.xml"); XMLDocument1- >Active = false; XMLDocument1- >FileName = "config.xml"; } XMLDocument1- >Active = true; ConfigDataShow(); } //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - void __fastcall TConfigForm::BtnModiClick(TObject *Sender) { EdtTimeInterval- >Enabled = true; EdtMaxFetchNumber- >Enabled = true; EdtMonitorID- >Enabled = true; EdtMonitorPort- >Enabled = true; EdtListenPort- >Enabled = true; BtnModi- >Enabled = false; BtnSave- >Enabled = true; BtnUndo- >Enabled = true; BtnExit- >Enabled = false; } //自定义函数, 用于显示配置信息 void __fastcall TConfigForm::ConfigDataShow() { _di_IXMLNode XMLCurrentNode; EdtTimeInterval- >Enabled = false; EdtMaxFetchNumber- >Enabled = false; EdtMonitorID- >Enabled = false; EdtMonitorPort- >Enabled = false; EdtListenPort- >Enabled = false; XMLCurrentNode = XMLDocument1 - >Docu- mentElement; EdtTimeInterval- >Text = XMLCurrentNode - >ChildNodes - >Nodes [WideString("TimeInterval")]- >Text; EdtMaxFetchNumber- >Text = XMLCurrentNode - >ChildNodes - >Nodes
本栏目责任编辑: 谢媛媛
[WideString("MaxFetchNumber")]- >Text; EdtMonitorID- >Text = XMLCurrentNode - >ChildNodes - >Nodes
[WideString("MonitorID")]- >Text; EdtMonitorPort- >Text = XMLCurrentNode - >ChildNodes - >Nodes
下面以笔者所开发项目中的一个实例来说明在 C++ Builder 中 将 配 置 信 息 保 存 在 XML 文 件 中 的 方
法。该项目中需要在 XML 文件中保存的配置信息有: 监 控 号 、监 控 程 序 听 端 口 、接 收 监 控 信 息 端 口 、取 数 据 库 记 录 的 时 间 间 隔 、每 次 所 取 最 大 记 录 数 。 设 计 步 骤 如下:
关键词: XML; 配置文件; TXMLDocument 组件 中图分类号: TP 311 文献标识码: A 文章编号: 1009- 3044(2008)02- 10295- 03
S tore Configura tion Informa tion of Applica tion by XML File s QIAN R en- feng
*Sender) {_di_IXMLNode XMLCurrentNode; XMLCurrentNode = XMLDocument1 - >Docu-
mentElement; XMLCurrentNode - >ChildNodes - >Nodes
[WideString("TimeInterval")]- >Text = EdtTimeInterval- >Text; XMLCurrentNode - >ChildNodes - >Nodes
本栏目责任编辑: 谢媛媛
软件设计开发
用 XML文件保存应用程序的配置信息
钱仁锋 ( 福建省经济信息中心, 福建 福州 350003)
摘要: 随着 XML 在跨平台数据交换技术中的广泛应用, 越来越多的软件采用 XML 文件作为配置文件的 形式。本文通过一个实例讲述在 C+ + Builder 中用 XML 文件保存应用程序的配置信息的实现过程。
295来自百度文库
软件设计开发
这些组件的主要属性设置如下表所示:
编写窗体 ConfigForm 的实现代码 Config.cpp 如下: #include <vcl.h> #pragma hdrstop #include "Config.h" //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - #pragma package(smart_init) #pragma resource "*.dfm" TConfigForm *ConfigForm; ///- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - __fastcall TConfigForm::TConfigForm(TComponent* Owner) : TForm(Owner) { } //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - void __fastcall TConfigForm::FormCreate (TObject *Sender) { if (FileExists("config.xml")) { 296 电脑知识与技术
[WideString("MonitorPort")]- >Text; EdtListenPort- >Text = XMLCurrentNode - >ChildNodes - >Nodes
[WideString("ListenPort")]- >Text; BtnModi- >Enabled = true; BtnSave- >Enabled = false; BtnUndo- >Enabled = false; BtnExit- >Enabled = true; } void __fastcall TConfigForm::BtnSaveClick(TObject
2 设计用来编辑配置信息的页面。
新建一个窗体, 在窗体上放置一个 TXMLDocu- ment、五个 TLabel、五个 TEdit、一个 TPanel、四个 TButton, 如下图所示:
收稿日期: 2007- 12- 10 作者简介: 钱仁锋, 福建省经济信息中心工程师, 熟悉数据库开发技术及 C/ C+ + 、JAVA 等开发语言。
[WideString("MaxFetchNumber")]- >Text = EdtMaxFetchNumber- >Text; XMLCurrentNode - >ChildNodes - >Nodes
[WideString("MonitorID")]- >Text = EdtMonitorID- >Text; XMLCurrentNode - >ChildNodes - >Nodes