天天看點

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

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

ConfigurationManager.AppSettings["..."];

ConfigurationManager.ConnectionStrings["..."];

這樣友善快捷的方法來通路web.config中的AppSettings和ConnectionStrings這二個節的内容

但對于其它節,特别是使用者自定義節的通路卻并不友善,比如web.config中有這麼一段内容

<?xml version="1.0"?>

<configuration>

...

 <system.webServer>

  <validation validateIntegratedModeConfiguration="false" myname="Jimmy"/>

  ...

 </system.webServer>

</configuration>

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

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

using System;

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

using System.Xml;

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

using System.Configuration;

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

using System.Data;

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

using System.Collections;

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

using System.IO;

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

namespace JIMMY.TOOLS

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

...{

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

    /**//// <summary>

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

    /// Description:XML封裝操作類1.04版

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

    /// Author:jimmy mail:[email protected] Date:2006-10-28

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

    /// </summary>

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

    public class XmlControl

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

    ...{

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

        protected string strXmlFile;

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

        protected XmlDocument objXmlDoc = new XmlDocument();

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

        public XmlControl(string XmlFile, Boolean bOverWrite, string sRoot)

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

        ...{

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

            try

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

            ...{

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

                //如果覆寫模式,則強行建立一個xml文檔

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

                if (bOverWrite)

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

                ...{

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

                    objXmlDoc.AppendChild(objXmlDoc.CreateXmlDeclaration("1.0", "utf-8", null));//設定xml的版本,格式資訊

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

                    objXmlDoc.AppendChild(objXmlDoc.CreateElement("", sRoot, ""));//建立根元素

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

                    objXmlDoc.Save(XmlFile);//儲存

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

                }

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

                else //否則,檢查檔案是否存在,不存在則建立

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

                    if (!(File.Exists(XmlFile)))

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

                    ...{

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

                        objXmlDoc.AppendChild(objXmlDoc.CreateXmlDeclaration("1.0", "utf-8", null));

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

                        objXmlDoc.AppendChild(objXmlDoc.CreateElement("", sRoot, ""));

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

                        objXmlDoc.Save(XmlFile);

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

                    }

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

                objXmlDoc.Load(XmlFile);

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

            }

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

            catch (System.Exception ex)

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

                throw ex;

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

            strXmlFile = XmlFile;

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

        }

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

        /**//// <summary>

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

        /// 根據xPath值,傳回xPath下的所有下級子結節到一個DataView

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

        /// </summary>

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

        /// <param name="XmlPathNode">xPath值</param>

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

        /// <returns>有資料則傳回DataView,否則傳回null</returns>

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

        public DataView GetData(string XmlPathNode)

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

            //查找資料。傳回一個DataView

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

            DataSet ds = new DataSet();

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

                StringReader read = new StringReader(objXmlDoc.SelectSingleNode(XmlPathNode).OuterXml);

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

                ds.ReadXml(read);

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

                return ds.Tables[0].DefaultView;

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

            catch

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

                //throw;

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

                return null;

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

        //...為了不至于把代碼弄得太複雜,其它方法這裡略去

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

    }

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

}

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

 回到正題,以下是通路system.webServer下的validation節點中的validateIntegratedModeConfiguration或myname的屬性值的代碼

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

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

XmlControl xc = new XmlControl(Server.MapPath("~/web.config"), false, "configuration");

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

DataView dv = xc.GetData("configuration/system.webServer/validation");

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

Response.Write(dv[0][0].ToString() + "<br/>");//輸出validateIntegratedModeConfiguration的屬性值

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

Response.Write(dv[0][1].ToString());//輸出myname的屬性值

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

甚至還可以将結果綁定到一個GridView上

GridView1.DataSource = dv;

GridView1.DataBind();

繼續閱讀