Visual Basic.NET 7.x (2002/03)Visual Basic 9 (2008)Visual Basic 8 (2005)Windows 2003Visual Basic 6Visual Studio 2005Windows 2000高级Windows XP.NET 2.0中级开发Visual StudioWindows.NETVisual Basic
XML 序列化 - 第一部分






3.95/5 (6投票s)
如何使用 XML 序列化和反序列化对象

引言
System.Xml.Serialization
提供将对象(包括基于自定义类别的对象)转换为 XML 文件以及从 XML 文件转换对象的方法。使用 XML 序列化,你可以将几乎任何对象写入文本文件,以便稍后用几行代码检索。 同样,你可以使用 XML 序列化通过 Web 服务在计算机之间传输对象——即使远程计算机不使用 .NET Framework。
背景
本示例展示了使用 XML 序列化的简单方法。通过这个概念,任何人都可以将值设置为特定对象,并将该对象作为 XML 文件存储到任何位置,并由其他/相同的用户随时检索该文件。
Using the Code
如何使用 XML 序列化对象
Dim xs As XmlSerializer = New XmlSerializer(GetType(Order))
Dim sw As StreamWriter
sw = New StreamWriter(Application.StartupPath & "\Order\Order.xml")
Dim p_ord As New Order
Try
'Set properties
p_ord.Customer = txtcustomer.Text
p_ord.TableNo = txttableno.Text
p_ord.MenuItem = txtmenuitem.Text
p_ord.OrderedQty = txtqty.Text
p_ord.OrderedTaste = cmbTaste.SelectedItem.ToString
p_ord.OrderedFat = cmbFat.SelectedItem.ToString
xs.Serialize(sw, p_ord)
sw.Close()
MsgBox("Order has been placed successfully.")
TabControl1.SelectedTab = TabControl1.TabPages(1)
Catch ex As Exception
MsgBox(ex.ToString)
Finally
p_ord = Nothing
End Try
如何使用 XML 反序列化对象
Dim r_ord As Order
Dim sr As StreamReader
Dim xs As XmlSerializer = New XmlSerializer(GetType(Order))
Try
'Pull in contents of an object serialized into an XML file
'and deserialize it into an object
sr = New StreamReader(Application.StartupPath & "\Order\Order.xml")
r_ord = xs.Deserialize(sr)
sr.Close()
' Read the properties
lblcustomer.Text = r_ord.Customer
lbltableno.Text = r_ord.TableNo
lblMenuitem.Text = r_ord.MenuItem
lblqty.Text = r_ord.OrderedQty
lblTaste.Text = r_ord.OrderedTaste
lblFats.Text = r_ord.OrderedFat
Catch ex As Exception
MsgBox(ex.ToString)
Finally
r_ord = Nothing
End Try
输出 XML 文件
<?xml version="1.0" encoding="utf-8"?>
<Class_Order xmlns:xsi=http://www.w3.org/2001/XMLSchema-instance
xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<Customer>Bruce Preece</Customer>
<TableNo>4</TableNo>
<OrderedQty>3</OrderedQty>
<OrderedTaste>None</OrderedTaste>
<OrderedFat>None</OrderedFat>
<MenuItem>Veg Cheese Burger</MenuItem>
</Class_Order>
关注点
XML 序列化不能用于序列化私有数据或对象图。要序列化对象,首先创建一个 stream
、TextWriter
或 XmlWriter
。然后创建一个 XmlSerializer
对象并调用 XmlSerializer.Serialize
方法。要反序列化对象,请执行相同的步骤,但调用 XmlSerializer.Deserialize
方法。
更新
访问 XML 序列化 第二部分。
本文可帮助你复习 XML 序列化的高级概念和 abstract
类。