我这里用Winform和WebForm两种为例说明怎样操作xml文档来作为配置文件进行读取操作。

1.新建一个类,命名为“SystemConfig.cs”。代码例如以下:

<span style="font-family:Microsoft YaHei;font-size:14px;">using System;
using System.Collections.Generic;
using System.Text;
using System.Xml;
using System.IO;namespace ConfigMgrTest
{public class SystemConfig{#region"基本操作函数"/// <summary>/// 得到程序工作文件夹/// </summary>/// <returns></returns>private static string GetWorkDirectory(){try{return Path.GetDirectoryName(typeof(SystemConfig).Assembly.Location);}catch{return System.Windows.Forms.Application.StartupPath;}}/// <summary>/// 推断字符串是否为空串/// </summary>/// <param name="szString">目标字符串</param>/// <returns>true:为空串;false:非空串</returns>private static bool IsEmptyString(string szString){if (szString == null)return true;if (szString.Trim() == string.Empty)return true;return false;}/// <summary>/// 创建一个制定根节点名的XML文件/// </summary>/// <param name="szFileName">XML文件</param>/// <param name="szRootName">根节点名</param>/// <returns>bool</returns>private static bool CreateXmlFile(string szFileName, string szRootName){if (szFileName == null || szFileName.Trim() == "")return false;if (szRootName == null || szRootName.Trim() == "")return false;XmlDocument clsXmlDoc = new XmlDocument();clsXmlDoc.AppendChild(clsXmlDoc.CreateXmlDeclaration("1.0", "GBK", null));clsXmlDoc.AppendChild(clsXmlDoc.CreateNode(XmlNodeType.Element, szRootName, ""));try{clsXmlDoc.Save(szFileName);return true;}catch{return false;}}/// <summary>/// 从XML文件获取相应的XML文档对象/// </summary>/// <param name="szXmlFile">XML文件</param>/// <returns>XML文档对象</returns>private static XmlDocument GetXmlDocument(string szXmlFile){if (IsEmptyString(szXmlFile))return null;if (!File.Exists(szXmlFile))return null;XmlDocument clsXmlDoc = new XmlDocument();try{clsXmlDoc.Load(szXmlFile);}catch{return null;}return clsXmlDoc;}/// <summary>/// 将XML文档对象保存为XML文件/// </summary>/// <param name="clsXmlDoc">XML文档对象</param>/// <param name="szXmlFile">XML文件</param>/// <returns>bool:保存结果</returns>private static bool SaveXmlDocument(XmlDocument clsXmlDoc, string szXmlFile){if (clsXmlDoc == null)return false;if (IsEmptyString(szXmlFile))return false;try{if (File.Exists(szXmlFile))File.Delete(szXmlFile);}catch{return false;}try{clsXmlDoc.Save(szXmlFile);}catch{return false;}return true;}/// <summary>/// 获取XPath指向的单一XML节点/// </summary>/// <param name="clsRootNode">XPath所在的根节点</param>/// <param name="szXPath">XPath表达式</param>/// <returns>XmlNode</returns>private static XmlNode SelectXmlNode(XmlNode clsRootNode, string szXPath){if (clsRootNode == null || IsEmptyString(szXPath))return null;try{return clsRootNode.SelectSingleNode(szXPath);}catch{return null;}}/// <summary>/// 获取XPath指向的XML节点集/// </summary>/// <param name="clsRootNode">XPath所在的根节点</param>/// <param name="szXPath">XPath表达式</param>/// <returns>XmlNodeList</returns>private static XmlNodeList SelectXmlNodes(XmlNode clsRootNode, string szXPath){if (clsRootNode == null || IsEmptyString(szXPath))return null;try{return clsRootNode.SelectNodes(szXPath);}catch{return null;}}/// <summary>/// 创建一个XmlNode并加入到文档/// </summary>/// <param name="clsParentNode">父节点</param>/// <param name="szNodeName">结点名称</param>/// <returns>XmlNode</returns>private static XmlNode CreateXmlNode(XmlNode clsParentNode, string szNodeName){try{XmlDocument clsXmlDoc = null;if (clsParentNode.GetType() != typeof(XmlDocument))clsXmlDoc = clsParentNode.OwnerDocument;elseclsXmlDoc = clsParentNode as XmlDocument;XmlNode clsXmlNode = clsXmlDoc.CreateNode(XmlNodeType.Element, szNodeName, string.Empty);if (clsParentNode.GetType() == typeof(XmlDocument)){clsXmlDoc.LastChild.AppendChild(clsXmlNode);}else{clsParentNode.AppendChild(clsXmlNode);}return clsXmlNode;}catch{return null;}}/// <summary>/// 设置指定节点中指定属性的值/// </summary>/// <param name="parentNode">XML节点</param>/// <param name="szAttrName">属性名</param>/// <param name="szAttrValue">属性值</param>/// <returns>bool</returns>private static bool SetXmlAttr(XmlNode clsXmlNode, string szAttrName, string szAttrValue){if (clsXmlNode == null)return false;if (IsEmptyString(szAttrName))return false;if (IsEmptyString(szAttrValue))szAttrValue = string.Empty;XmlAttribute clsAttrNode = clsXmlNode.Attributes.GetNamedItem(szAttrName) as XmlAttribute;if (clsAttrNode == null){XmlDocument clsXmlDoc = clsXmlNode.OwnerDocument;if (clsXmlDoc == null)return false;clsAttrNode = clsXmlDoc.CreateAttribute(szAttrName);clsXmlNode.Attributes.Append(clsAttrNode);}clsAttrNode.Value = szAttrValue;return true;}#endregion#region"配置文件的读取和写入"private static string CONFIG_FILE = "SystemConfig.xml";/// <summary>///  读取指定的配置文件里指定Key的值/// </summary>/// <param name="szKeyName">读取的Key名称</param>/// <param name="szDefaultValue">指定的Key不存在时,返回的值</param>/// <returns>Key值</returns>public static int GetConfigData(string szKeyName, int nDefaultValue){string szValue = GetConfigData(szKeyName, nDefaultValue.ToString());try{return int.Parse(szValue);}catch{return nDefaultValue;}}/// <summary>///  读取指定的配置文件里指定Key的值/// </summary>/// <param name="szKeyName">读取的Key名称</param>/// <param name="szDefaultValue">指定的Key不存在时,返回的值</param>/// <returns>Key值</returns>public static float GetConfigData(string szKeyName, float fDefaultValue){string szValue = GetConfigData(szKeyName, fDefaultValue.ToString());try{return float.Parse(szValue);}catch{return fDefaultValue;}}/// <summary>///  读取指定的配置文件里指定Key的值/// </summary>/// <param name="szKeyName">读取的Key名称</param>/// <param name="szDefaultValue">指定的Key不存在时,返回的值</param>/// <returns>Key值</returns>public static bool GetConfigData(string szKeyName, bool bDefaultValue){string szValue = GetConfigData(szKeyName, bDefaultValue.ToString());try{return bool.Parse(szValue);}catch{return bDefaultValue;}}/// <summary>///  读取指定的配置文件里指定Key的值/// </summary>/// <param name="szKeyName">读取的Key名称</param>/// <param name="szDefaultValue">指定的Key不存在时,返回的值</param>/// <returns>Key值</returns>public static string GetConfigData(string szKeyName, string szDefaultValue){string szConfigFile = string.Format("{0}\\{1}", GetWorkDirectory(), CONFIG_FILE);if (!File.Exists(szConfigFile)){return szDefaultValue;}XmlDocument clsXmlDoc = GetXmlDocument(szConfigFile);if (clsXmlDoc == null)return szDefaultValue;string szXPath = string.Format(".//key[@name='{0}']", szKeyName);XmlNode clsXmlNode = SelectXmlNode(clsXmlDoc, szXPath);if (clsXmlNode == null){return szDefaultValue;}XmlNode clsValueAttr = clsXmlNode.Attributes.GetNamedItem("value");if (clsValueAttr == null)return szDefaultValue;return clsValueAttr.Value;}/// <summary>///  保存指定Key的值到指定的配置文件里/// </summary>/// <param name="szKeyName">要被改动值的Key名称</param>/// <param name="szValue">新改动的值</param>public static bool WriteConfigData(string szKeyName, string szValue){string szConfigFile = string.Format("{0}\\{1}", GetWorkDirectory(), CONFIG_FILE);if (!File.Exists(szConfigFile)){if (!CreateXmlFile(szConfigFile, "SystemConfig"))return false;}XmlDocument clsXmlDoc = GetXmlDocument(szConfigFile);string szXPath = string.Format(".//key[@name='{0}']", szKeyName);XmlNode clsXmlNode = SelectXmlNode(clsXmlDoc, szXPath);if (clsXmlNode == null){clsXmlNode = CreateXmlNode(clsXmlDoc, "key");}if (!SetXmlAttr(clsXmlNode, "name", szKeyName))return false;if (!SetXmlAttr(clsXmlNode, "value", szValue))return false;//return SaveXmlDocument(clsXmlDoc, szConfigFile);}#endregion}
}
</span>

PS:假设是Winform,则不用改动SystemConfig.cs的代码,假设是WebForm的话则需改动后面的路径和写入与读取的代码。将我标红框的删除就可以,如图:

2.WinForm的界面例如以下:

cs代码例如以下:

<pre name="code" class="csharp"><span style="font-family:Microsoft YaHei;font-size:14px;">using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;namespace ConfigMgrTest
{public partial class MainForm : Form{public MainForm(){InitializeComponent();}private void btnSave_Click(object sender, EventArgs e){          //保存SystemConfig.WriteConfigData("UserID", this.txtUserID.Text.Trim());SystemConfig.WriteConfigData("Password", this.txtPassword.Text.Trim());SystemConfig.WriteConfigData("Birthday",this.textBox3.Text.Trim());this.txtUserID.Text = null;this.txtPassword.Text = null;this.textBox3.Text = null;MessageBox.Show("成功保存到配置文件" + Application.StartupPath + "SystemConfig.xml \n点击读取button进行读取!");}private void btnClose_Click(object sender, EventArgs e){//读取this.txtUserID.Text = SystemConfig.GetConfigData("UserID", string.Empty);this.txtPassword.Text = SystemConfig.GetConfigData("Password", string.Empty);this.textBox3.Text = SystemConfig.GetConfigData("Birthday", string.Empty);}}
}</span>

3.WebForm效果例如以下:

前台代码例如以下:

<span style="font-family:Microsoft YaHei;font-size:14px;"><%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm1.aspx.cs" Inherits="Tc.Web.WebForm1" %><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server"><title></title>
</head>
<body><form id="form1" runat="server"><div>    <asp:Label ID="Label1" runat="server" Text="url1:"></asp:Label><asp:TextBox ID="TextBox1" runat="server"></asp:TextBox><p><asp:Label ID="Label2" runat="server" Text="url2:"></asp:Label><asp:TextBox ID="TextBox2" runat="server"></asp:TextBox></p><asp:Button ID="Button1" runat="server" Text="写入" οnclick="Button1_Click" /><asp:Button ID="Button2" runat="server" Text="读取" οnclick="Button2_Click" /></form>  </div>
</body>
</html>
</span>

后台代码例如以下:

<span style="font-family:Microsoft YaHei;font-size:14px;">using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using Tc.Web._Code;namespace Tc.Web
{public partial class WebForm1 : System.Web.UI.Page{protected void Page_Load(object sender, EventArgs e){}protected void Button2_Click(object sender, EventArgs e){//读取this.TextBox1.Text = SystemConfig.GetConfigData("url1", string.Empty);this.TextBox2.Text = SystemConfig.GetConfigData("url2", string.Empty);           }protected void Button1_Click(object sender, EventArgs e){//写入SystemConfig.WriteConfigData("url1", this.TextBox1.Text.Trim());SystemConfig.WriteConfigData("url2", this.TextBox2.Text.Trim());this.TextBox1.Text = null;this.TextBox2.Text = null;}}
}</span>

终于xml文档效果如图:

PS:这里顺便给大家推荐一款软件,名字叫“ FirstObject XML Editor”:

FirstObject XML Editor是一个颇具特色的XML编辑器。该编辑器对中文的支持良好。能够快速载入XML文档,并生成可自己定义的树视图以显示 XML 文档的数据结构(很有特色。为其它 XML 编辑器所无)。能够调用 MSXML 分析引擎验证 XML 文档的正确性和有效性。

其独特的 FOAL 语言还能够用于编程处理 XML 文档,这也是一般的 XML 编辑器所无的。 
FirstObject XML Editor除了支持一般的 XML 编辑功能之外,还具有生成 XML 节点相应的 XPath 定位表达式、获取所选文字的 Unicode 代码、对 XML 代码进行自己主动缩进排版以便阅读等特殊功能。推荐各位 XML 爱好者尝试本编辑器。

并且,这是一个免费的软件,你能够一直使用它。如图所看到的:

PS:“FirstObject XML Editor”及WinForm之xml读取配置文件Demo下载地址:http://115.com/lb/5lbdzr1o4qf1

115网盘礼包码:5lbdzr1o4qf1

转载于:https://www.cnblogs.com/mengfanrong/p/5211720.html

c#读取xml文件配置文件Winform及WebForm-Demo具体解释相关推荐

  1. c#读取xml文件配置文件Winform及WebForm-Demo详解

    我这里用Winform和WebForm两种为例说明如何操作xml文档来作为配置文件进行读取操作. 1.新建一个类,命名为"SystemConfig.cs",代码如下: <sp ...

  2. [转帖]C#执行SQL脚本,读取XML文件

    [转帖]C#执行SQL脚本,读取XML文件 需要添加如下引用: using System.IO; using System.Data.SqlClient; using System.Collectio ...

  3. java xml 反射_Java 读取XML文件以及Java 的反射机制实现

    Java 读取XML文件以及Java 的反射机制实现 代码部分 import java.io.File; import javax.xml.parsers.DocumentBuilder; impor ...

  4. C#中常用的几种读取XML文件的方法

    XML文件是一种常用的文件格式,例如WinForm里面的app.config以及Web程序中的web.config文件,还有许多重要的场所都有它的身影.Xml是Internet环境中跨平台的,依赖于内 ...

  5. 使用.NET读取XML文件

    介绍 本文中我将介绍在ASP.NET应用程序中如何读取XML文件,这是一个十分有用的技巧.使用这个技巧,我们能够定制我们的应用程序的配置文件,也可以读取那些保存在XML文件中的数据. 概论 下面的代码 ...

  6. C#读取XML文件的基类实现

    刚到新单位,学习他们的源代码,代码里读写系统配置文件的XML代码比较老套,直接写在一个系统配置类里,没有进行类的拆分,造成类很庞大,同时,操作XML的读写操作都是使用SetAttribute和node ...

  7. java jdom 读取xml文件_使用Jdom读取XML文件方法

    使用Jdom读取XML文件方法,学习Spring时,我们经常看到很多xml配置文件,Spring通过在配置文件中的配置,使用IOC(控制反转),从而实现代码的灵活性,本篇我就为大家介绍一种解析xml方 ...

  8. 使用tinyxml2.h读取xml文件并匹配文件中的值

    文章目录 前言 一.tinyxml2是什么? 二.使用步骤 1.xml文件 1.引入库 2.读入数据 附件 前言 `提示:使用tinyxml2.h读取xml文件并匹配文件中的值,需要导入#includ ...

  9. SQL Server中读取XML文件的简单做法

    SQL Server 2000使得以XML导出数据变得更加简单,但在SQL Server 2000中导入XML数据并对其进行处理则有些麻烦.本文介绍在SQL Server中读取XML文件的简单做法. ...

最新文章

  1. 数据结构 ---- 链表
  2. 『第26天』Sunos (一)
  3. 个推透传消息设置通知栏展示 ios_手机通知栏消息太多,这招教你关闭弹出消息,立刻清爽...
  4. Django操作与内容
  5. C#日期函数所有样式大全
  6. python识别简单训练模型_Python-OpenCV —— 物体识别(TrainCascadeClassification)
  7. Python基础之初识类和对象
  8. pthread_cleanup_push()/pthread_cleanup_pop()的详解
  9. ssh 遍历IPS 进行连接
  10. Python之仓库管理系统
  11. NiFi+Kylo安装部署
  12. java linux获取本机ip_Java 获取本机IP
  13. 电脑自主发送信息--python程序
  14. 彩虹域名授权平台系统正版源码 带下载更新功能
  15. 骨传导有什么品牌,骨传导耳机品牌推荐
  16. 自制USB转串口TTL(ch340)
  17. 【Excel自动化办公Part3】:工作表的创建、删除、复制和修改名称,冻结窗格,添加筛选
  18. 有关likely和unlikely
  19. 数据分散情况的统计图-盒须图
  20. 我写了个随机点名系统,非常好用~ 我给它取名叫做——随机点名系统

热门文章

  1. Archlinux 下的 VMWare Workstation 维护笔记
  2. POJ 2135 Farm Tour amp;amp; HDU 2686 Matrix amp;amp; HDU 3376 Matrix Again 费用流求来回最短路...
  3. 滴滴专车——司机提现流程
  4. 最佳实践系列:前端代码标准和最佳实践
  5. windows下GIT使用记录--00准备阶段
  6. FIREBIRD浅历
  7. b2evolution_0.9.2修改(1)
  8. php帝国程序跨表调用数组,帝国CMS 跨表调用相关信息标签
  9. mysql场景测试_【干货】不同场景下 如何进行MySQL迁移
  10. 如何在Spring Boot中使用Hibernate Natural ID