利用xml輕鬆讀取web.config中的使用者自定義節

deeply發表於2021-09-09

雖然vs.net2.0為我們提供了

ConfigurationManager.AppSettings["..."];
ConfigurationManager.ConnectionStrings["..."];

這樣方便快捷的方法來訪問web.config中的AppSettings和ConnectionStrings這二個節的內容

但對於其它節,特別是使用者自定義節的訪問卻並不方便,比如web.config中有這麼一段內容


...
 
  
  
  ...
 


我們要訪問system.webServer下的validation節點中的validateIntegratedModeConfiguration或myname的屬性值,就遠遠沒有象ConfigurationManager.AppSettings這樣來得方便,其實web.config是一個標準的xml,我們完全可以按xml的xpath語句來檢索xml中的任何內容,這裡我提供了一個示例,為了方便操作xml,把對xml的一些操作方法封裝到了一個類裡,以下是這個類的主要程式碼

圖片描述using System;
圖片描述using System.Xml;
圖片描述using System.Configuration;
圖片描述using System.Data;
圖片描述using System.Collections;
圖片描述using System.IO;
圖片描述
圖片描述namespace JIMMY.TOOLS
圖片描述圖片描述...{
   /// 


圖片描述    /// Description:XML封裝操作類1.04版
圖片描述    /// Author:jimmy mail:yjmyzz@126.com Date:2006-10-28
圖片描述    /// 

圖片描述    public class XmlControl
  ...{
圖片描述        protected string strXmlFile;
圖片描述        protected XmlDocument objXmlDoc = new XmlDocument();
圖片描述
圖片描述        public XmlControl(string XmlFile, Boolean bOverWrite, string sRoot)
       ...{
圖片描述            try
           ...{
圖片描述                //如果覆蓋模式,則強行建立一個xml文件
圖片描述                if (bOverWrite)
                ...{
圖片描述                    objXmlDoc.AppendChild(objXmlDoc.CreateXmlDeclaration("1.0", "utf-8", null));//設定xml的版本,格式資訊
圖片描述                    objXmlDoc.AppendChild(objXmlDoc.CreateElement("", sRoot, ""));//建立根元素
圖片描述                    objXmlDoc.Save(XmlFile);//儲存
圖片描述                }

圖片描述                else //否則,檢查檔案是否存在,不存在則建立
               ...{
圖片描述                    if (!(File.Exists(XmlFile)))
                  ...{
圖片描述                        objXmlDoc.AppendChild(objXmlDoc.CreateXmlDeclaration("1.0", "utf-8", null));
圖片描述                        objXmlDoc.AppendChild(objXmlDoc.CreateElement("", sRoot, ""));
圖片描述                        objXmlDoc.Save(XmlFile);
圖片描述                    }

圖片描述                }

圖片描述                objXmlDoc.Load(XmlFile);
圖片描述            }

圖片描述            catch (System.Exception ex)
           ...{
圖片描述                throw ex;
圖片描述            }

圖片描述            strXmlFile = XmlFile;
圖片描述        }

圖片描述
       /// 
圖片描述        /// 根據xPath值,返回xPath下的所有下級子結節到一個DataView
圖片描述        /// 

圖片描述        /// xPath值
圖片描述        /// 有資料則返回DataView,否則返回null

圖片描述        public DataView GetData(string XmlPathNode)
       ...{
圖片描述            //查詢資料。返回一個DataView
圖片描述            DataSet ds = new DataSet();
圖片描述            try
           ...{
圖片描述                StringReader read = new StringReader(objXmlDoc.SelectSingleNode(XmlPathNode).OuterXml);
圖片描述                ds.ReadXml(read);
圖片描述                return ds.Tables[0].DefaultView;
圖片描述            }

圖片描述            catch
           ...{
圖片描述                //throw;
圖片描述                return null;
圖片描述            }

圖片描述        }

圖片描述
圖片描述        //...為了不至於把程式碼弄得太複雜,其它方法這裡略去
圖片描述    }

圖片描述
圖片描述}
圖片描述
圖片描述 回到正題,以下是訪問system.webServer下的validation節點中的validateIntegratedModeConfiguration或myname的屬性值的程式碼

當然用先using JIMMY.TOOLS 以下是主要程式碼

 

圖片描述XmlControl xc = new XmlControl(Server.MapPath("~/web.config"), false, "configuration");
圖片描述
圖片描述DataView dv = xc.GetData("configuration/system.webServer/validation");
圖片描述
圖片描述Response.Write(dv[0][0].ToString() + "
");//輸出validateIntegratedModeConfiguration的屬性值
圖片描述
圖片描述Response.Write(dv[0][1].ToString());//輸出myname的屬性值
圖片描述
圖片描述

甚至還可以將結果繫結到一個GridView上

GridView1.DataSource = dv;

GridView1.DataBind();

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/1978/viewspace-2801026/,如需轉載,請註明出處,否則將追究法律責任。

相關文章