利用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的一些操作方法封装到了一个类里,以下是这个类的主要代码

using System;
using System.Xml;
using System.Configuration;
using System.Data;
using System.Collections;
using System.IO;

namespace JIMMY.TOOLS
...{
    /**//// <summary>
    /// Description:XML封装操作类1.04版
    /// Author:jimmy mail:yjmyzz@126.com Date:2006-10-28
    /// </summary>
    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;
        }

        /**//// <summary>
        /// 根据xPath值,返回xPath下的所有下级子结节到一个DataView
        /// </summary>
        /// <param name="XmlPathNode">xPath值</param>
        /// <returns>有数据则返回DataView,否则返回null</returns>
        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() + "<br/>");//输出validateIntegratedModeConfiguration的属性值

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

甚至还可以将结果绑定到一个GridView上

GridView1.DataSource = dv;

GridView1.DataBind();

时间: 2024-11-01 02:17:05

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

一个修改web.config中appSettings配置节的函数

web|函数 这个函数主要使用XmlDocument来解析web.config.并用SelectSingleNode()方法来定位要修改的配置节.要注意的是最后程序要Save(),所以,你的apsnet帐号必须对web.config拥有写权限. -------------------------------------------------------------------------------- /// <summary> /// 修改web.config文件appSettings配置

一个修改web.config中appSettings配置节的函数-Web_Service开发-.NE

这个函数主要使用XmlDocument来解析web.config.并用SelectSingleNode()方法来定位要修改的配置节.要注意的是最后程序要Save(),所以,你的apsnet帐号必须对web.config拥有写权限. -------------------------------------------------------------------------------- /// <summary> /// 修改web.config文件appSettings配置节中的Add里

.net 如何在web.config中读取自定义节点以及注意的问题

web|问题 这几天在做一个urlMapping类库的时候用到了如何读取web.config中自定义节点, 做完后觉得挺好 现就制作过程叙述一下. web.config文件在web application中起着非常重要的作用. 它本身包含了授权,handler,compilation,globalization,错误与跟踪等一系列设置.但是当你需要一些特殊的或者想添加自己的settings时,应该如何做呢? 要创建自定义设置 要求有2步:写cs代码 和 修改web.config 代码 这里我们创

运行时修改Web.config中的元素值 zhenyu(原作)

大家都知道Asp.Net提供了一个WebApplication的配置文件web.config,让我们可以很方便地设置Web应用程序,另外还可以在appSettings节中增加一些我们常要使用的单元,如数据库连接串等,利用System.Configuration.ConfigurationSetting类我们可以很容易读取这些单元的值,但是要改变这些值就需要一些技巧了,下面我就来告诉大家如何在运行时利用System.Management中的类去改变这些单元的值. 现假设您有一个WebApplica

在web.config中添加连接字符串

web|字符串|字符串 web.config中的文件如下: <?xml version="1.0" encoding="utf-8" ?><configuration><appSettings>      <add key="constring"  value="integrated security=SSPI;data source=localhost;initial catalog=教务管理

解决打不开 RSA 密钥容器 即:加密web.config中的内容

简单的解决方法: WebConfig 加解密,未能使用提供程序"RsaProtectedConfigurationProvider"进行解密.提供程序返回错误消息为: 打不开 RSA 密钥容器.问题:未添加用于访问 RSA 密钥容器命令:aspnet_regiis -pa "NetFrameworkConfigurationKey" "NT AUTHORITY/NETWORK SERVICE"注意事项:XP下:aspnet_regiis -pa

如何利用XML技术读取修改SVG格式的文档呢,提示有未定义类型,如何定义呢

问题描述 <?xmlversion="1.0"encoding="UTF-8"standalone="no"?><!DOCTYPEsvgPUBLIC"-//W3C//DTDSVG1.0//EN""http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd"><!--由MicrosoftVisio2003,SVGExport,

通过什么方式可以改WEB.CONFIG中FORMS中设定的用户名和密码?

问题描述 <credentialspasswordFormat="SHA1"><username="zjgqy"password="4B52917CFC87724E67FBB79C543FAE8E4AC7D9FD"/></credentials>如何实现不要在WEB.CONFIG中改.做一个修改密码的页面? 解决方案 解决方案二:顶..............................解决方案三:UP..

关于Web.config中控制用户访问权限的问题!

问题描述 我在Web.config中对各个用户或者角色对某个路径的设置在调试中正常,但在iis中发布中发现必须设置某种文件(如txt文件)的映射才能有效控制权限!但是实际应用中涉及的文件类型千变万化,我不可能一个个手动设置啊!请问有没有通用的方法? 解决方案 解决方案二:这样设计权限的初衷?解决方案三:可以用用户权限组做解决方案四:用户权限组具体怎么做?<?xmlversion='1.0'encoding='utf-8'?><configuration><system.web