(原)举例说明C#自定义配置文件app.config及如何读取配置内容(在app.config加入自定义的XML节点)?...

App.config文件如下:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <configSections>
    <section name="Companies" type="ConvertCV.ConvertCfgHandler,ConvertCV"/>
  </configSections>
  <Companies>
    <Company Enabled="false">
      <ID>563</ID>
      <Name>公司AA</Name>
      <SourceFolder>E:\test\PubResume\aa</SourceFolder>
      <TargetFolder>E:\test\PubResume\aa_cvt</TargetFolder>
    </Company>
    <Company Enabled="false">
      <ID>234</ID>
      <Name>公司BB</Name>
      <SourceFolder>E:\test\PubResume\bb</SourceFolder>
      <TargetFolder>E:\test\PubResume\bb_cvt</TargetFolder>
    </Company>
    <Company Enabled="true">
      <ID>384</ID>
      <Name>公司CC</Name>
      <SourceFolder>E:\test\PubResume\cc</SourceFolder>
      <TargetFolder>E:\test\PubResume\cc_cvt</TargetFolder>
    </Company>
  </Companies>
  <appSettings>
    <!--要处理哪天的数据,如果为空,则处理当天的数据-->
    <add key="PubDate" value="2009-3-22"/>
    <!--基础数据目录-->
    <add key="BaseDataPath" value="E:\Batch\test\bin\Debug\BaseData"/>
  </appSettings>
</configuration>

读取自定义配置文件:

第一步,先创建configuration section类

public class CompanySection
    {
        public CompanySection()
        {
           
        }

        public CompanySection(XmlNode company)
        {
            XmlElement c = (XmlElement)company;
            _enabled = Convert.ToBoolean(c.Attributes["Enabled"].Value);
            _id = c.SelectSingleNode("ID").InnerText;
            _name = c.SelectSingleNode("Name").InnerText;

            _sourceFolder = c.SelectSingleNode("SourceFolder").InnerText;
            if (_sourceFolder.Substring(_sourceFolder.Length - 1) != @"\")
                _sourceFolder += @"\";

            _targetFolder = c.SelectSingleNode("TargetFolder").InnerText;
            if (_targetFolder.Substring(_targetFolder.Length - 1) != @"\")
                _targetFolder += @"\";
        }
       
        #region 属性
        private string _id = "";
        private string _name = "";
        private string _sourceFolder = "";
        private string _targetFolder = "";
        private bool _enabled = true;

        public string ID
        {
            get { return _id; }
            set { _id = value; }
        }

        public string Name
        {
            get { return _name; }
            set { _name = value; }
        }

        public string SourceFolder
        {
            get { return _sourceFolder; }
            set { _sourceFolder = value; }
        }

        public string TargetFolder
        {
            get { return _targetFolder; }
            set { _targetFolder = value; }
        }

        public bool Enabled
        {
            get { return _enabled; }
            set { _enabled = value; }
        }
        #endregion

    }

第二步, 需要继承IConfigurationSectionHandler接口

 

public class ConvertCfgHandler : IConfigurationSectionHandler
    {
        public ConvertCfgHandler()
        {

        }

        #region IConfigurationSectionHandler Members

        public object Create(object parent, object configContext, XmlNode section)
        {
            List<CompanySection> _list = new List<CompanySection>();

            foreach(XmlNode company in section.SelectNodes("//Company"))
            {
                CompanySection _company = new CompanySection(company);
                if(_company.Enabled)
                    _list.Add(_company);
            }

            return _list;
        }
        #endregion
    }

 

第三步,读取配置项

public class CompanyConfig
{
        /// <summary>
        /// 获取配置文件中的公司信息
        /// </summary>
        /// <returns></returns>
        public static List<CompanySection> GetCompanyList()
        {
            return (List<CompanySection>)ConfigurationSettings.GetConfig("Companies");
        }

}

第四步,使用配置内容

static void Main()

{

     private List<CompanySection> _companyList =  CompanyConfig.GetCompanyList();

     foreach(CompanySection company in _companyList)

     {

          //处理代码

     }

}

 

转载于:https://www.cnblogs.com/anny-1980/articles/1421554.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值