利用System.Xml.Serialization进行序列化与反序列化操作
System.Xml.Serialization能够很方便地将XML文件转换为对象,或者将对象转换为XML文件。
假设:我们有下列这样的一段XML
<XML>
<S1 A1="" A2="" A3="" />
<S2 B1="" B2="">
<O C1="" C2=""/>
<O C1="" C2=""/>
<O C1="" C2=""/>
...
</S2>
</XML>
1.根据XML的结构创建对象
Public Class XmlDoc
Public Property Node1 As S1
Public Property Node2 As S2
End Class
Public Class S1
Public Property A1 As String
Public Property A2 As String
Public Property A3 As String
End Class
Public Class S2
Public Property B1 As Double
Public Property B2 As Integer
Public Property olist As List(Of O)
End Class
Public Class O
Public Property C1 As String
Public Property C2 As String
End Class
2.添加标记
注:当节点名称与变量名称相同时,可以省略(xxxName="xx")
<XmlType(TypeName:="XML")>
Public Class XmlDoc
<XmlElement(ElementName:="S1")>
Public Property Node1 As S1
<XmlElement(ElementName:="S2")>
Public Property Node2 As S2
End Class
Public Class S1
<XmlAttribute>
Public Property A1 As String
<XmlAttribute>
Public Property A2 As String
<XmlAttribute>
Public Property A3 As String
End Class
Public Class S2
<XmlAttribute>
Public Property B1 As Double
<XmlAttribute>
Public Property B2 As Integer
<XmlElement(ElementName:="O")>
Public Property olist As List(Of O)
End Class
Public Class O
<XmlAttribute>
Public Property C1 As String
<XmlAttribute>
Public Property C2 As String
End Class
3.读取XML文件并返回XmlDoc对象。
我们先封装一个静态函数
Public Shared Function Load(ByVal filePath As String, ByVal objectType As Type) As Object
Try
Using reader As System.IO.StreamReader = New System.IO.StreamReader(filePath)
Dim xs As System.Xml.Serialization.XmlSerializer = New System.Xml.Serialization.XmlSerializer(objectType)
Dim ret As Object = xs.Deserialize(reader)
Return ret
End Using
Catch ex As Exception
Return Nothing
End Try
End Function
调用Load函数将读取XML文件并返回XmlDoc对象
Dim doc As XmlDoc
Dim path As String = "test.xml"
doc = CType(Load(path, GetType(XmlDoc)), XmlDoc)
4.将XmlDoc对象保存为XML文件
Public Shared Function Save(ByVal filePath As String, ByVal XMLObject As Object) As Boolean
Try
Dim ser As XmlSerializer = New XmlSerializer(XMLObject.[GetType]())
Dim writer As TextWriter = New StreamWriter(filePath)
Dim ns As XmlSerializerNamespaces = New XmlSerializerNamespaces()
ns.Add("", "")
ser.Serialize(writer, XMLObject, ns)
writer.Close()
Return True
Catch ex As Exception
Return False
End Try
End Function
调用Save函数,将XmlDoc保存为Xml
Dim doc As XmlDoc = New XmlDoc()
Dim path As String = "test.xml"
Save(path, doc)
本文介绍了如何利用System.Xml.Serialization在VB.NET中进行XML的序列化和反序列化操作。首先,根据XML结构创建对象,并添加必要的标记。接着,详细阐述了如何读取XML文件生成XmlDoc对象,以及如何将XmlDoc对象保存回XML文件,提供了一种静态函数的封装方法来实现这一过程。

5315

被折叠的 条评论
为什么被折叠?



