熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Java編程 >> Java核心技術 >> 正文

如何在Microsoft.NET中自定義配置文件

2013-11-12 23:37:20  來源: Java核心技術 

  摘要
  使用MicrosoftNET開發一個項目時可能包含了Windows應用程序Web應用程序Web ServiceWindows Service等多種應用如果您想使這幾個應用程序使用同一個配置(比如同一個數據庫連接)而又不想重復編寫不同的配置文件那麼NET提供的配置文件方案可能就不能達到你的目的了本文介紹一種簡單的使用xml格式的配置文件及其使用方法本文假設您的項目有至少一個Windows應用程序一個Web應用程序和一個Window Service應用
  
  配置文件結構
  為了使所有應用程序均可訪問到該配置文件本實例將配置文件放在WINNT\SYSTEM系統目錄下當然讀者可以自己定義文件存放的位置但需要注意程序的移植性Windows系統目錄可以使用Windows API函數獲取但要求使用的WindowsWeb和Window Service應用程序對系統目錄有讀取的權限
  
  為了方便闡述我們將該配置文件命名為nfig(與微軟NET的配置文件擴展名相同)在程序中如果不指定配置文件名則配置文件默認為nfig
  
  配置文件的結構如下讀者可以根據自己的需要對配置文件進行添刪
  
  <?xml version= encoding=utf?>
  <root>
  <!Sql Server DB>
  <systemdb>
  <server>localhost</server>
  <uid>sa</uid>
  <pwd> </pwd>
  <database>Pubs</database>
  <pooling>True</pooling>
  <maxpoolsize></maxpoolsize>
  <minpoolsize></minpoolsize>
  <lifetime></lifetime>
  </systemdb>
  <!Sql Server DB>
  <webdb server=localhost
  uid=sa
  pwd=
  database=NorthWind
  pooling=True
  maxpoolsize=
  minpoolsize=
  lifetime=
  />
  <!—SMTP Server>
  <smtpserver server= port= />
  </root>
  
  說明可以看到配置有兩種形式第一種的配置值直接寫在xml節點上另一種將配置值寫在節點的屬性上下面的章節中將對這兩種節點配置的獲取和設置分別說明
  
  配置文件采用xml結構關於xml的語法和概念網絡上的相關資料很多請讀者自己參考網絡資源第一個節點使用子節點保存數據庫配置通過獲取子節點值來獲取數據庫的配置第二個節點使用節點的屬性來保存數據庫配置
  
  讀取配置
  下面將講述如何使用程序讀取nfig配置文件
  
  輔助程序下面的程序段使用Windows API函數獲取系統目錄
  
  using SystemRuntimeInteropServices;
  using SystemText;
   [DllImport(kernel)]
   private static extern void GetSystemDirectory(StringBuilder SysDirint count);
   public string GetSystemDirectory()
   {
   const int nChars = ;
   StringBuilder Buff = new StringBuilder(nChars);
   GetSystemDirectory(BuffnChars);
   return BuffToString();
   }
  
  這裡我們先引用了SystemRuntimeInteropServices名稱空間然後引用API函數GetSystemDirectory(StringBuilderint)最後重寫該方法GetSystemDirectory()方法調用API函數將系統目錄作為字符串返回
  
  解析xml文件本例使用XML DOM(Document Object Modal)類來解析xml文件程序片斷如下
  
  using SystemXml;
  private XmlDocument xmlDoc = new XmlDocument();
  private string strConfigFile;
  public SystemSetting()
  {
  strConfigFile = GetSystemDirectory() + @\nfig;
  xmlDocLoad(strConfigFile);
  }
  public string GetConfigValue(string strNodestring strAttribute)
  {
  string strReturn = ;
   try
   {
   //根據指定路徑獲取節點
   XmlNode xmlNode = xmlDocSelectSingleNode(strNode);
  
   //獲取節點的屬性並循環取出需要的屬性值
   XmlAttributeCollection xmlAttr = xmlNodeAttributes;
   for(int i= ;i<xmlAttrCount; i++)
   {
   if (xmlAttrItem(i)Name == strAttribute)
   strReturn = xmlAttrItem(i)Value;
   }
   }
   catch(XmlException xmle)
   {
   throw xmle;
   }
   return strReturn;
   }
   public string GetConfigValue(string strNode)
   {
   string strReturn = ;
   try
   {
   //根據路徑獲取節點
   XmlNode xmlNode = xmlDocSelectSingleNode(strNode);
   strReturn = xmlNodeInnerText;
   }
   catch(XmlException xmle)
   {
   SystemConsoleWriteLine(xmleMessage);
   }
   return strReturn;
   }
  
  這裡我們先引用了SystemXml名稱空間在構造函數中指定配置文件到系統目錄下的nfig然後使用XmlDocument的Load()方法將該文件讀入XmlDocument對象xmlDoc
  
  GetConfigValue(string strNodestring strAttribute)方法讀取指定節點的指定屬性值如配置文件的節點的server屬性
  
  GetConfigValue(string strNode)方法讀取指定節點的值如第一節所述配置文件節點的子節點的值
  
  管理配置
  下面的程序示例提供管理配置文件的三個主要方法
  
  public void SetConfigValue(string strNodestring newValue)
  {
   try
   {
   //根據指定路徑獲取節點
   XmlNode xmlNode = xmlDocSelectSingleNode(strNode);
  
   //設置節點值
   xmlNodeInnerText = newValue;
   }
   catch(XmlException xmle)
   {
   throw xmle;
   }
   }
  
   public void SetConfigValue(string strNodestring strAttributestring newValue)
   {
   try
   {
   //根據指定路徑獲取節點
   XmlNode xmlNode = xmlDocSelectSingleNode(strNode);
  
   //獲取節點的屬性並循環取出需要的屬性值
   XmlAttributeCollection xmlAttr = xmlNodeAttributes;
   for(int i= ;i<xmlAttrCount; i++)
   {
   if (xmlAttrItem(i)Name == strAttribute)
   xmlAttrItem(i)Value = newValue;
   }
   }
   catch(XmlException xmle)
   {
   throw xmle;
   }
   }
  
   public void SaveConfig()
   {
   try
   {
   //保存設置的結果
   xmlDocSave(strConfigFile);
   }
   catch(XmlException xmle)
   {
   throw xmle;
   }
   }
  
  SetConfigValue(string strNodestring newValue)用來設置節點值SetConfigValue(string strNodestring strAttributestring newValue)用來設置節點的屬性值在修改了配置內容後必須調用SaveConnfig()方法用來將修改過的配置保存到文件
  
  總結
  配制文件有許多種形式本文所提的只是一種自己編寫的配制文件當然對本文的程序做一點點修改您可以編寫出其它各種各樣符合程序實際需要的配制文件希望本文對您開發應用程序有些幫助
From:http://tw.wingwit.com/Article/program/Java/hx/201311/11142.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.