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

本文涉及的产品
可视分析地图(DataV-Atlas),3 个项目,100M 存储空间
简介: 虽然vs.net2.0为我们提供了 ConfigurationManager.AppSettings["..."]; ConfigurationManager.ConnectionStrings[".
虽然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();

相关实践学习
DataV Board用户界面概览
本实验带领用户熟悉DataV Board这款可视化产品的用户界面
阿里云实时数仓实战 - 项目介绍及架构设计
课程简介 1)学习搭建一个数据仓库的过程,理解数据在整个数仓架构的从采集、存储、计算、输出、展示的整个业务流程。 2)整个数仓体系完全搭建在阿里云架构上,理解并学会运用各个服务组件,了解各个组件之间如何配合联动。 3&nbsp;)前置知识要求 &nbsp; 课程大纲 第一章&nbsp;了解数据仓库概念 初步了解数据仓库是干什么的 第二章&nbsp;按照企业开发的标准去搭建一个数据仓库 数据仓库的需求是什么 架构 怎么选型怎么购买服务器 第三章&nbsp;数据生成模块 用户形成数据的一个准备 按照企业的标准,准备了十一张用户行为表 方便使用 第四章&nbsp;采集模块的搭建 购买阿里云服务器 安装 JDK 安装 Flume 第五章&nbsp;用户行为数据仓库 严格按照企业的标准开发 第六章&nbsp;搭建业务数仓理论基础和对表的分类同步 第七章&nbsp;业务数仓的搭建&nbsp; 业务行为数仓效果图&nbsp;&nbsp;
目录
相关文章
|
XML 存储 JSON
使用自定义XML配置文件在.NET桌面程序中保存设置
本文将详细介绍如何在.NET桌面程序中使用自定义的XML配置文件来保存和读取设置。除了XML之外,我们还将探讨其他常见的配置文件格式,如JSON、INI和YAML,以及它们的优缺点和相关的NuGet类库。最后,我们将重点介绍我们为何选择XML作为配置文件格式,并展示一个实用的示例。
135 0
|
4月前
|
安全 前端开发 API
【Azure 应用服务】Azure Web App 服务默认支持一些 Weak TLS Ciphers Suite,是否有办法自定义修改呢?
【Azure 应用服务】Azure Web App 服务默认支持一些 Weak TLS Ciphers Suite,是否有办法自定义修改呢?
|
4月前
|
JavaScript PHP 开发者
PHP中的异常处理与自定义错误处理器构建高效Web应用:Node.js与Express框架实战指南
【8月更文挑战第27天】在PHP编程世界中,异常处理和错误管理是代码健壮性的关键。本文将深入探讨PHP的异常处理机制,并指导你如何创建自定义错误处理器,以便优雅地管理运行时错误。我们将一起学习如何使用try-catch块捕获异常,以及如何通过set_error_handler函数定制错误响应。准备好让你的代码变得更加可靠,同时提供更友好的错误信息给最终用户。
|
5月前
|
XML 开发工具 数据格式
自定义 DSL 流程图(含XML 描述邮件,XML 描述流程图)
自定义 DSL 流程图(含XML 描述邮件,XML 描述流程图)
42 0
自定义 DSL 流程图(含XML 描述邮件,XML 描述流程图)
|
7月前
|
XML 网络协议 Java
XML Web 服务技术解析:WSDL 与 SOAP 原理、应用案例一览
XML Web服务是基于WSDL、SOAP、RDF和RSS等标准的网络应用程序组件技术。WSDL描述服务接口和消息格式,SOAP用于结构化信息交换,RDF描述网络资源,RSS则用于发布网站更新。Web服务特点是自包含、自描述,基于开放协议,可重用且能连接现有软件。WSDL文档包含`types`、`message`、`portType`和`binding`元素,定义服务操作和协议。SOAP协议规定消息格式,通过HTTP等传输。
559 1
|
7月前
|
XML JSON 前端开发
【Web 前端】XML和JSON的区别?
【4月更文挑战第22天】【Web 前端】XML和JSON的区别?
【Web 前端】XML和JSON的区别?
|
7月前
|
XML 存储 前端开发
【Web 前端】HTML、XHTML、XML 有什么区别?
【4月更文挑战第22天】【Web 前端】HTML、XHTML、XML 有什么区别?
|
7月前
|
JavaScript 前端开发 架构师
Web Components:自定义元素与Shadow DOM的实践
Web Components是用于创建可重用自定义HTML元素的技术集合,包括Custom Elements、Shadow DOM、HTML Templates和Slots。通过Custom Elements定义新元素,利用Shadow DOM封装私有样式,&lt;slot&gt;元素允许插入内容。自定义元素支持事件处理和属性观察,可复用且样式隔离。它们遵循Web标准,兼容各前端框架,注重性能优化,如懒加载和Shadow DOM优化。
73 0
|
7月前
|
XML JSON JavaScript
使用JSON和XML:数据交换格式在Java Web开发中的应用
【4月更文挑战第3天】本文比较了JSON和XML在Java Web开发中的应用。JSON是一种轻量级、易读的数据交换格式,适合快速解析和节省空间,常用于API和Web服务。XML则提供更强的灵活性和数据描述能力,适合复杂数据结构。Java有Jackson和Gson等库处理JSON,JAXB和DOM/SAX处理XML。选择格式需根据应用场景和需求。
112 0
|
7月前
|
数据库
最全三大框架整合(使用映射)——struts.xml和web.xml配置
最全三大框架整合(使用映射)——数据库资源文件jdbc.properties