ITPub博客

首页 > IT职业 > IT图书 > 利用xml轻松读取web.config中的用户自定义节

利用xml轻松读取web.config中的用户自定义节

IT图书 作者:deeply 时间:2021-09-09 09:14:32 0 删除 编辑

虽然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博客 ” ,链接:https://blog.itpub.net/1978/viewspace-2801026/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2008-05-30

  • 博文量
    215
  • 访问量
    24530