Files
Desktop_BLVStudio_EN/BLV_Studio/XmlSerializer.vb
2025-12-11 14:22:51 +08:00

71 lines
2.0 KiB
VB.net

Imports System.IO
Imports System.Text
Imports System.Xml
Public Class BXmlSerializer
''' <summary>
''' 将类对象序列化为xml文件
''' </summary>
''' <param name="path"></param>
''' <param name="srcObject"></param>
Public Shared Sub SerializeToXml(path As String, srcObject As Object)
Dim serializer As New Xml.Serialization.XmlSerializer(srcObject.GetType)
Dim xmlString As String = String.Empty
Using writer As New StringUTF8Writer()
serializer.Serialize(writer, srcObject)
xmlString = writer.ToString()
End Using
Using ws As New StreamWriter(path)
ws.Write(xmlString)
End Using
End Sub
''' <summary>
''' 将类对象序列化为xml文件
''' </summary>
''' <param name="path"></param>
''' <param name="srcObject"></param>
Public Shared Sub SerializeToXml(Of T)(path As String, srcObject As T)
Dim serializer As New Xml.Serialization.XmlSerializer(GetType(T))
Dim xmlString As String
Using writer As New StringUTF8Writer()
serializer.Serialize(writer, srcObject)
xmlString = writer.ToString()
End Using
Using ws As New StreamWriter(path)
ws.Write(xmlString)
End Using
End Sub
''' <summary>
''' 从Xml文件中反序列化成指定类
''' </summary>
''' <typeparam name="T"></typeparam>
''' <param name="path"></param>
''' <returns></returns>
Public Shared Function DeserializeFormXml(Of T)(path As String) As T
Dim serializer As New Xml.Serialization.XmlSerializer(GetType(T))
Using reader As New StreamReader(path)
Return CType(serializer.Deserialize(reader), T)
End Using
End Function
Public Class StringUTF8Writer
Inherits StringWriter
Public Overrides ReadOnly Property Encoding As Encoding
Get
Return Encoding.UTF8
End Get
End Property
End Class
End Class