[原创]简单的XML配置文件读写类

以前读写配置都用INI文件,现在写一个读写XML的类,功能比较简单

http://xingfustar.cnblogs.com

我的问题是如何能得到根节点的名字,而不是像现在这样写死为“Configuration"。希望大家多多讨论,提出宝贵意见

/*----------------------------------------------------------------
 * 版权:
http://XingFuStar.cnblogs.com
 * 
 * 文件名: XmlConfig
 * 文件功能描述: 简单的XML配置文件读写类
 * 
 * 作者:XingFuStar
 * 日期:2007年9月13日
 * 
 * 当前版本:V1.0.0
 * 
 * 修改日期:
 * 修改内容:
 *---------------------------------------------------------------
*/


/*----------------------------------------------------------------
 * 相关的XML文件模版

<?xml version="1.0" encoding="utf-8"?>
<Configuration>
    <Section1>
        <Key1>Value</Key1>
        
        <KeyN>Value</KeyN>
    </Section1>
    
    <SectionN>
        <Key1>Value</Key1>
        
        <KeyN>Value</KeyN>
    </SectionN>
</Configuration>
 *----------------------------------------------------------------
*/


using System;
using System.Xml;
using System.Diagnostics;


namespace XingFuStudio.Config
{
    
class XmlConfig
    {
        
private string xmlPath;
        
private bool isConfig;
        
private XmlDocument xmlDocument;

        
        
/// <summary>
        
/// 构造函数:装载配置文件
        
/// </summary>
        
/// <param name="xmlPath">配置文件的路径</param>
        public XmlConfig(string xmlPath)
        {
            
//请不要删除以下信息
            
//版权:http://XingFuStar.cnblogs.com

            
this.xmlDocument = new XmlDocument();
            
this.XmlPath = xmlPath;
        }

        
/// <summary>
        
/// Xml配置文件的路径
        
/// </summary>
        public string XmlPath
        {
            
set
            {
                xmlPath 
= value;
                isConfig 
= OnXmlPathChange();
            }
        }

        
/// <summary>
        
/// 读取配置
        
/// </summary>
        
/// <param name="section">节点</param>
        
/// <param name="key"></param>
        
/// <param name="value">返回的键值</param>
        
/// <returns>键值</returns>
        
/// <returns>是否读取成功</returns>
        public bool ReadConfig(string section, string key, ref string value)
        {
            
bool isRead = false;
            
try
            {
                
if (isConfig)
                {
                    value 
= xmlDocument.SelectSingleNode("Configuration").SelectSingleNode(section).SelectSingleNode(key).InnerText;
                    isRead 
= true;
                }
            }
            
catch (Exception ex)
            {
                Debug.Print(ex.Message);
            }
            
return isRead;
        }

        
/// <summary>
        
/// 写入配置
        
/// </summary>
        
/// <param name="section">节点</param>
        
/// <param name="key"></param>
        
/// <param name="value">要写入的新键值</param>
        
/// <returns>是否写入成功</returns>
        public bool WriteConfig(string section, string key, string value)
        {
            
bool isWrited = false;
            
try
            {
                
if (isConfig)
                {
                    xmlDocument.SelectSingleNode(
"Configuration").SelectSingleNode(section).SelectSingleNode(key).InnerText = value;
                    xmlDocument.Save(xmlPath);
                    isWrited 
= true;
                }
            }
            
catch (Exception ex)
            {
                Debug.Print(ex.Message);
            }
            
return isWrited;
        }

        
#region 私有方法
        
private bool OnXmlPathChange()
        {
            
bool isLoaded = false;
            
try
            {
                xmlDocument.Load(xmlPath);
                isLoaded 
= true;
            }
            
catch (Exception ex)
            {
                Debug.Print(ex.Message);
            }
            
return isLoaded;
        }
        
#endregion
    }

}
posted @ 2007-09-13 13:32  幸福★星  阅读(1282)  评论(0编辑  收藏  举报