[原创]简单的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
    }

}

转载于:https://www.cnblogs.com/XingfuStar/archive/2007/09/13/891682.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值