您的位置:首页 > 编程语言 > VB

使用XmlSerializer将对象序列化至XML文件中(VB.NET)

2009-02-17 10:24 483 查看

.NET框架提供了System.Xml.Serialization.XmlSerializer类型,为将对象序列化为XML或将XML序列化为对象提供了很大支持

先定义一个Person类

Public Class Person
Public FirstName As String
Public LastName As String
End Class


代码示例(VB.NET):

Public Sub usexml()
Dim pers As New Person With {.FirstName = "John", .LastName = "Evans"}
'序列化至文件
Dim ser As New Xml.Serialization.XmlSerializer(GetType(Person))
Using fs As New IO.FileStream("C:/person.xml", IO.FileMode.Create)
ser.Serialize(fs, pers)
End Using
'从文件反序列化
Using fs As New IO.FileStream("C:/person.xml", IO.FileMode.Open)
Dim p As Person = DirectCast(ser.Deserialize(fs), Person)
Console.WriteLine("{0} {1}", p.FirstName, p.LastName)  '=> John Evans
End Using
End Sub


得到的XML文件如下:

<?xml version="1.0"?>
<Person xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<FirstName>John</FirstName>
<LastName>Evans</LastName>
</Person>


可以看到,Person类型的每个属性都被实现为一个以该属性命名的XML元素。但是在导入由另一个程序产生的XML数据时,不能控制在序列化进程期间所采
用的XML架构。为了解决这一潜在的问题,我们可以改变XmlSerializer类型的默认属性。例如,改变XML元素的名称,确定将属性
(property)实现为XML属性(attribute),而不是实现为元素,例如以下XML片段:

<?xml version="1.0"?>
<PersonalData xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" first="John" last="Evans" />


通过将属性应用于Person类的成员,可以对XML序列化进程进行一定程度的控制。例如,还可以通过如下代码定义Person类型,来产生前面所示的XML文件。

<Xml.Serialization.XmlRoot("PersonalData")> _
Public Class Person
<Xml.Serialization.XmlAttribute("first")> _
Public FirstName As String
<Xml.Serialization.XmlAttribute("last")> _
Public LastName As String
End Class
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐