65.9K
CodeProject 正在变化。 阅读更多。
Home

XML 序列化 - 第一部分

starIconstarIconstarIcon
emptyStarIcon
starIcon
emptyStarIcon

3.95/5 (6投票s)

2008年2月21日

CPOL

1分钟阅读

viewsIcon

32904

downloadIcon

423

如何使用 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 序列化不能用于序列化私有数据或对象图。要序列化对象,首先创建一个 streamTextWriterXmlWriter。然后创建一个 XmlSerializer 对象并调用 XmlSerializer.Serialize 方法。要反序列化对象,请执行相同的步骤,但调用 XmlSerializer.Deserialize 方法。

更新

访问 XML 序列化 第二部分

本文可帮助你复习 XML 序列化的高级概念和 abstract 类。

© . All rights reserved.