zoukankan      html  css  js  c++  java
  • 利用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();

    作者:菩提树下的杨过
    出处:http://yjmyzz.cnblogs.com
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
  • 相关阅读:
    asp.net membership 修改密码
    linq直接执行sql语句
    word-wrap,word-break,white-space,text-overflow的区别和用法
    ObjectQuery查询及方法
    HTML 标签的 enctype 属性
    【C#学习笔记】类构造函数使用
    【C#学习笔记】播放wav文件
    【C#学习笔记】类型转换
    【C#学习笔记】函数重载
    【C#学习笔记】读文件
  • 原文地址:https://www.cnblogs.com/yjmyzz/p/977495.html
Copyright © 2011-2022 走看看