71 lines
2.0 KiB
VB.net
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 |