




已阅读5页,还剩2页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
VB.Net中用XML替代INI配置功能的完整教程一、 前言1二、 内容1第一步:新建一个项目1第二步:新建一个类1第三步:写类代码1第四步:调用5第五步:测试6三、尾声7四、附:实例71、 前言众所周知,xml文件很强大,从某种程度上说它完全替代ini也不为过,网上也有许多用VB.net编写xml文件的实例,但几乎找不到一个完整的xml替代ini的实例(也许是我太菜?),于是自己写了一个XML替代INI配置功能的完整类(当然,也可以改为模块),通过该类,创建、调用一个xml配置文件可以像VB6.0中配置INI文件一样简简单单,在Microsoft Visual Studio 2012中测试通过,好了,废话不多说,看文!2、 内容第一步:新建一个项目首先,打开VB.Net,新建一个项目,这不用说了吧_,咱现在是演示,一切命名都按默认的吧。第二步:新建一个类接着,新建一个类,还是默认命名(注意是类,不是模块)。第三步:写类代码重点的代码来了,在类中写入以下代码:= 代码开始,勿复制本行 =Imports System.IOImports System.XmlPublic Class Class1 * *模 块 名:XML_操作 *作 用:完整替代 ini 的 xml 操作类 *创 建 人:灵魂的缠绵 *日 期:2013-7-14 *#Region 变量声明区 Public Shared Root As String = My.Application.Info.AssemblyName#End Region#Region XML_创建 【创建一个XML文档】 根据XML文件路径创建 XML文件路径 Public Shared Function XML_Create(ByVal XmlPath As String) Try Dim XmlWrite As New System.Xml.XmlTextWriter(XmlPath, System.Text.Encoding.GetEncoding(GB2312) XmlWrite.Formatting = System.Xml.Formatting.Indented 自动缩进 XmlWrite.WriteStartDocument(True) 开始一个文档 自动编写版本并具有独立属性的XML声明 XmlWrite.WriteStartElement(Root) 开始根元素 XmlWrite.WriteEndElement() 关闭根元素 XmlWrite.WriteEndDocument() 文档结束 XmlWrite.Flush() 刷新 XmlWrite.Close() 关闭 Return True Catch ex As Exception Return False MsgBox(Err.Description) End Try End Function#End Region#Region XML_读写_公共 【XML_读写_公共】 根据读写状态判断读写操作 有完整的父、子节点就改写子节点内容 否则创建,并根据节点预设值写子节点内容 读写状态 父节点 子节点 节点内容 节点预设值 XML文件路径 Public Shared Function XML_ReadWrite_Common(ByVal ReadWrite_Condition As Boolean, ByVal XmlNodeF As String, ByVal XmlNodeZ As String, ByVal XmlNodeN As String, ByVal XmlNodeY As String, ByVal XmlPath As String) As String Try XML_ReadWrite_Common = Nothing If File.Exists(XmlPath) = False Then Call XML_Create(XmlPath) XML文件不存在就创建 Dim VE As Boolean = Nothing 设置一个值 用于判断是否读取的情况下写入 Dim XmlDoc As New Xml.XmlDocument() XmlDoc.Load(XmlPath) Dim New_Root As Xml.XmlNode = XmlDoc.SelectSingleNode(Root) Dim New_XmlNodeF As Xml.XmlElement = Nothing Dim New_XmlNodeZ As Xml.XmlElement = Nothing If XmlNodeN Is Nothing Then XmlNodeN = XmlNodeY Dim NodePathF As System.Xml.XmlNode = XmlDoc.SelectSingleNode(Root & / & XmlNodeF) If NodePathF Is Nothing Then 父节点不存在 创建一个从父节点开始的完整的节点 New_XmlNodeF = XmlDoc.CreateElement(XmlNodeF) New_XmlNodeZ = XmlDoc.CreateElement(XmlNodeZ) New_XmlNodeZ.InnerText = XmlNodeN New_XmlNodeF.AppendChild(New_XmlNodeZ) New_Root.AppendChild(New_XmlNodeF) VE = True If ReadWrite_Condition = True Then XML_ReadWrite_Common = XmlNodeY Else 父节点存在 判断子节点是否存在 Dim NodePathZ As System.Xml.XmlNode = XmlDoc.SelectSingleNode(Root & / & XmlNodeF & / & XmlNodeZ) If NodePathZ Is Nothing Then 子节点不存在 创建一个从子节点开始的完整的节点 New_XmlNodeZ = XmlDoc.CreateElement(XmlNodeZ) New_XmlNodeZ.InnerText = XmlNodeN New_Root.SelectSingleNode(XmlNodeF).AppendChild(New_XmlNodeZ) If ReadWrite_Condition = True Then XML_ReadWrite_Common = XmlNodeY Else 子节点存在 判断是读取还是写入 If ReadWrite_Condition = True Then 当读写状态为读时 If VE = True Then 在读时写入 读取的值为预设值 XML_ReadWrite_Common = XmlNodeY Else 读取的值为子节点的值 XML_ReadWrite_Common = New_Root.SelectSingleNode(XmlNodeF).SelectSingleNode(XmlNodeZ).InnerText End If Else 当读写状态为写时 New_Root.SelectSingleNode(XmlNodeF).SelectSingleNode(XmlNodeZ).InnerText = XmlNodeN End If End If End If xmlDoc.Save(XmlPath) 保存 Catch ex As Exception Return False MsgBox(Err.Description) End Try End Function#End Region#Region XML_读取 【读取节点】 根据父节点和子节点定位 如果子节点不存在或无任何内容则根据节点预设值创建 父节点 子节点 节点预设值 XML文件路径 Public Shared Function XML_Read(ByVal XmlNodeF As String, ByVal XmlNodeZ As String, ByVal XmlNodeY As String, ByVal XmlPath As String) As String Try XML_Read = XML_ReadWrite_Common(True, XmlNodeF, XmlNodeZ, Nothing, XmlNodeY, XmlPath) Catch ex As Exception Return False MsgBox(Err.Description) End Try End Function#End Region#Region XML_写入 【写节点】 根据父节点和子节点定位 如果子节点不存在或无任何内容则根据节点内容创建,存在则根据节点内容覆盖原数据 父节点 子节点 节点内容 XML文件路径 Public Shared Function XML_Write(ByVal XmlNodeF As String, ByVal XmlNodeZ As String, ByVal XmlNodeN As String, ByVal XmlPath As String) Try Call XML_ReadWrite_Common(False, XmlNodeF, XmlNodeZ, XmlNodeN, Nothing, XmlPath) Return True Catch ex As Exception Return False MsgBox(Err.Description) End Try End Function#End RegionEnd Class= 代码结束,勿复制本行 =好了,这样类就写好了,为了便于审阅,单击左边的“-”将各功能代码折叠起来第四步:调用最后,可以调用了,调用前先做下准备工作:在窗口Form1内画4个文本框TextBox和2个按钮Button,布局如下图。在在窗口代码中写入如下代码= 代码开始,勿复制本行 =Public Class Form1 Dim XML_路径 As String = Environment.GetFolderPath(Environment.SpecialFolder.Desktop) & XML配置测试.xml Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click 写入 Call Class1.XML_Write(TextBox1.Text, TextBox2.Text, TextBox3.Text, XML_路径) End Sub Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click 读取 TextBox4.Text = Class1.XML_Read(TextBox1.Text, TextBox2
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 台阶坡道改建方案范本
- 审计部门年度工作总结
- 情志护理与养生
- 单招综评政策解读
- 教官培训工作述职报告
- 2026届福建省龙岩市北城中学英语九年级第一学期期末调研试题含解析
- 早教教师述职报告
- 新人销售技巧培训
- 2026届四川省成都西蜀实验英语九上期末学业质量监测试题含解析
- 江苏省徐州市市区部分2026届化学九年级第一学期期中学业水平测试试题含解析
- 2025-2030滑雪培训行业市场发展分析及前景趋势预测与投资可行性评估报告
- 课堂高效学习的主阵地 教学设计-2023-2024学年高中上学期主题班会
- 2025年放射工作人员培训考试试题(附答案)
- 高考熟词生义解密(复习讲义)-2026年高考英语一轮复习(北京专用)挖空版
- 2025年北京市中考英语试卷(含答案与解析)
- 浙江名校协作体(G12)2025年9月2026届高三返校联考英语(含答案)
- 2025年环保法律法规基础知识考试卷及答案
- 2026届新人教版高考物理一轮复习讲义:静电场及其应用(含答案)
- 检测基础知识培训课件
- 采购管理大师谢勤龙讲义《供应链管理的问题多多与解决之道》
- 国企招聘笔试题及答案-投资专员、投资经理B卷
评论
0/150
提交评论