为我工作的方式:
Imports System.IO
Imports System.Xml
Public Class Form1
Private Sub Form1_Load(sender As Object,e As EventArgs) Handles MyBase.Load
ValConfFile()
End Sub
Public Sub ValConfFile()
If File.Exists("config.xml") = False Then : CreateConfXML() : End If
End Sub
Public Sub CreateConfXML()
Dim obj As Object
Dim archivo As Object
Dim x As Integer = 1
obj = CreateObject("Scripting.FileSystemObject")
archivo = obj.CreateTextFile("config.xml",True)
archivo.WriteLine("<?xml version='1.0' encoding='utf-8'?>")
archivo.WriteLine("<conf>")
archivo.WriteLine("<pos>1</pos>")
For x = 1 To 4
archivo.WriteLine("<btn index='" & CStr(x) & "' value='' perm='false'></btn>")
Next
archivo.WriteLine("</conf>")
archivo.Close()
End Sub
End Class
,
XML序列化可用于此目的,实际上非常简单。您需要做的就是为您的数据设计一个或多个类,然后应用appropriate attributes(它们的名称以Xml...Attribute
的形式)以便按照您想要的方式序列化它们。
在此设置中,我使用了四个不同的属性:
-
XmlElement
-通常是最常见的一个。指定将属性序列化为其自身的元素。可以通过在构造函数中设置ElementName
参数来自定义结果名称。
如果用于列表或数组,则适用于集合中的每个项目。
-
XmlRoot
-与XmlElement
几乎相同,但用于根元素(类本身)。
-
XmlAttribute
-指定将属性序列化为应用于父对象的属性(name="value"
),而不是作为其内部元素的序列。
-
XmlText
-指定将属性的值序列化为父对象(即<object>property value</object>
)的标签之间的内容。
Imports System.IO
Imports System.Xml
Imports System.Xml.Serialization
<XmlRoot(ElementName:="conf")>
Public Class Config
<XmlElement(ElementName:="pos")>
Public Property Position As Integer
<XmlElement(ElementName:="btn")>
Public Property Buttons As New List(Of ConfigButton)
Public Sub New()
End Sub
Public Sub New(ByVal Position As Integer)
Me.Position = Position
End Sub
Public Shared Function Load(ByVal File As String) As Config
Using FStream As New FileStream(File,FileMode.Open,FileAccess.Read,FileShare.Read)
Dim Serializer As New XmlSerializer(GetType(Config))
Return Serializer.Deserialize(FStream)
End Using
End Function
Public Sub Save(ByVal File As String)
Using FStream As New FileStream(File,FileMode.Create,FileAccess.Write,FileShare.None)
Dim Serializer As New XmlSerializer(GetType(Config))
Serializer.Serialize(FStream)
End Using
End Sub
End Class
Public Class ConfigButton
<XmlText()>
Public Property DisplayName As String
<XmlAttribute("index")>
Public Property Index As Integer
<XmlAttribute("perm")>
Public Property Perm As Boolean
<XmlAttribute("value")>
Public Property Value As String
Public Sub New()
End Sub
Public Sub New(ByVal DisplayName As String,ByVal Value As String,ByVal Index As Integer,ByVal Perm As Boolean)
Me.DisplayName = DisplayName
Me.Value = Value
Me.Index = Index
Me.Perm = Perm
End Sub
End Class
用法示例:
Private cfg As Config
'
'Loading the config.
'
Private Sub Form1_Load(sender As Object,e As EventArgs) Handled MyBase.Load
If File.Exists("config.xml") Then
cfg = Config.Load("config.xml")
Else
cfg = New Config()
End If
End Sub
'
'Saving the config.
'
Private Sub Form1_FormClosed(sender As Object,e As EventArgs) Handles Me.FormClosed
cfg.Save("config.xml")
End Sub
添加按钮:
cfg.Buttons.Add(New ConfigButton("RuneLite.exe","D:\RuneLite\",2,False))
迭代按钮:
For Each btn As ConfigButton In cfg.Buttons
MessageBox.Show(btn.DisplayName)
Next
删除特定索引处的按钮:
'Removes the fourth button.
cfg.Buttons.RemoveAt(3)
本文链接:https://www.f2er.com/3020412.html