虽然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的一些操作方法封装到了一个类里,以下是这个类的主要代码
 using System;
using System; using System.Xml;
using System.Xml; using System.Configuration;
using System.Configuration; using System.Data;
using System.Data; using System.Collections;
using System.Collections; using System.IO;
using System.IO;
 namespace JIMMY.TOOLS
namespace JIMMY.TOOLS
 ...{
...{
   /**//// <summary> /// Description:XML封装操作类1.04版
    /// Description:XML封装操作类1.04版 /// Author:jimmy mail:yjmyzz@126.com Date:2006-10-28
    /// Author:jimmy mail:yjmyzz@126.com Date:2006-10-28 /// </summary>
    /// </summary> public class XmlControl
    public class XmlControl
  ...{ protected string strXmlFile;
        protected string strXmlFile; protected XmlDocument objXmlDoc = new XmlDocument();
        protected XmlDocument objXmlDoc = new XmlDocument();
 public XmlControl(string XmlFile, Boolean bOverWrite, string sRoot)
        public XmlControl(string XmlFile, Boolean bOverWrite, string sRoot)
       ...{ try
            try
           ...{ //如果覆盖模式,则强行创建一个xml文档
                //如果覆盖模式,则强行创建一个xml文档 if (bOverWrite)
                if (bOverWrite)
                ...{ objXmlDoc.AppendChild(objXmlDoc.CreateXmlDeclaration("1.0", "utf-8", null));//设置xml的版本,格式信息
                    objXmlDoc.AppendChild(objXmlDoc.CreateXmlDeclaration("1.0", "utf-8", null));//设置xml的版本,格式信息 objXmlDoc.AppendChild(objXmlDoc.CreateElement("", sRoot, ""));//创建根元素
                    objXmlDoc.AppendChild(objXmlDoc.CreateElement("", sRoot, ""));//创建根元素 objXmlDoc.Save(XmlFile);//保存
                    objXmlDoc.Save(XmlFile);//保存 }
                } else //否则,检查文件是否存在,不存在则创建
                else //否则,检查文件是否存在,不存在则创建
               ...{ if (!(File.Exists(XmlFile)))
                    if (!(File.Exists(XmlFile)))
                  ...{ objXmlDoc.AppendChild(objXmlDoc.CreateXmlDeclaration("1.0", "utf-8", null));
                        objXmlDoc.AppendChild(objXmlDoc.CreateXmlDeclaration("1.0", "utf-8", null)); objXmlDoc.AppendChild(objXmlDoc.CreateElement("", sRoot, ""));
                        objXmlDoc.AppendChild(objXmlDoc.CreateElement("", sRoot, "")); objXmlDoc.Save(XmlFile);
                        objXmlDoc.Save(XmlFile); }
                    } }
                } objXmlDoc.Load(XmlFile);
                objXmlDoc.Load(XmlFile); }
            } catch (System.Exception ex)
            catch (System.Exception ex)
           ...{ throw ex;
                throw ex; }
            } strXmlFile = XmlFile;
            strXmlFile = XmlFile; }
        }
       /**//// <summary> /// 根据xPath值,返回xPath下的所有下级子结节到一个DataView
        /// 根据xPath值,返回xPath下的所有下级子结节到一个DataView /// </summary>
        /// </summary> /// <param name="XmlPathNode">xPath值</param>
        /// <param name="XmlPathNode">xPath值</param> /// <returns>有数据则返回DataView,否则返回null</returns>
        /// <returns>有数据则返回DataView,否则返回null</returns> public DataView GetData(string XmlPathNode)
        public DataView GetData(string XmlPathNode)
       ...{ //查找数据。返回一个DataView
            //查找数据。返回一个DataView DataSet ds = new DataSet();
            DataSet ds = new DataSet(); try
            try
           ...{ StringReader read = new StringReader(objXmlDoc.SelectSingleNode(XmlPathNode).OuterXml);
                StringReader read = new StringReader(objXmlDoc.SelectSingleNode(XmlPathNode).OuterXml); ds.ReadXml(read);
                ds.ReadXml(read); return ds.Tables[0].DefaultView;
                return ds.Tables[0].DefaultView; }
            } catch
            catch
           ...{ //throw;
                //throw; return null;
                return null; }
            } }
        }
 //...为了不至于把代码弄得太复杂,其它方法这里略去
        //...为了不至于把代码弄得太复杂,其它方法这里略去 }
    }
 }
}
 回到正题,以下是访问system.webServer下的validation节点中的validateIntegratedModeConfiguration或myname的属性值的代码
 回到正题,以下是访问system.webServer下的validation节点中的validateIntegratedModeConfiguration或myname的属性值的代码
当然用先using JIMMY.TOOLS 以下是主要代码
 XmlControl xc = new XmlControl(Server.MapPath("~/web.config"), false, "configuration");
XmlControl xc = new XmlControl(Server.MapPath("~/web.config"), false, "configuration");
 DataView dv = xc.GetData("configuration/system.webServer/validation");
DataView dv = xc.GetData("configuration/system.webServer/validation");
 Response.Write(dv[0][0].ToString() + "<br/>");//输出validateIntegratedModeConfiguration的属性值
Response.Write(dv[0][0].ToString() + "<br/>");//输出validateIntegratedModeConfiguration的属性值
 Response.Write(dv[0][1].ToString());//输出myname的属性值
Response.Write(dv[0][1].ToString());//输出myname的属性值

甚至还可以将结果绑定到一个GridView上
GridView1.DataSource = dv;
GridView1.DataBind();
 
		 随时随地看视频
随时随地看视频 
				 
				 
				 
				