COM 对象序列化






3.90/5 (7投票s)
将 COM 对象序列化到 XML 文档或从 XML 文档反序列化
引言
ComSerialization
组件可用于将 COM 对象序列化和反序列化为 XML 文档。序列化是将对象 public
属性和字段转换为序列化格式(在本例中为 XML)以进行存储或传输的过程。反序列化将对象从 XML 输出恢复到其原始状态。您可以将序列化视为将对象的状态保存到缓冲区的一种方式。
XmlSerializer 对象
公共方法
Deserialize
: 将 XML 文档反序列化为对象引用Serialize
: 将对象序列化为 XML 文档
公共属性
CollectionAddMethod
: 将返回对集合项的引用的集合方法的名称IgnoreList
: 序列化时要忽略的属性的列表,用分号分隔LastError
: 发生的最后一个错误的描述
Serialize 方法
描述
将对象序列化为 XML 文档
语法
Public Function Serialize( _
ByVal SourceObject As Object _
) As String
参数
SourceObject
对要序列化的对象的引用
返回类型
返回一个 XML 字符串,表示对象的序列化
备注
serialize
方法将序列化没有任何参数的任何可读属性。如果属性返回一个对象,它将被递归序列化。支持 NewEnum
的集合也将被序列化。
使用 IgnoreList
从序列化中排除特定属性。
警告:请务必忽略可能导致无限循环的属性,例如 parent。
序列化限制
不支持数组和用户定义类型。
示例
Dim oXmlSerializer As ComSerialization.XmlSerializer
Dim oProject As Project
Dim oTask As Task
Dim oUser As User
Dim sXML As String
'create object
Set oProject = New Project
'add some test data
With oProject
.ProjectName = "Test"
.ProjectID = 1
.ProjectDescription = "This is a test"
.TestDate = Now
'example collection
Set oUser = .Users.Add
oUser.FirstName = "Me"
oUser.LastName = "Moe"
oUser.Email = "me@moe.com"
oUser.Phone = "555-1212"
Set oUser = Nothing
'example collection
Set oTask = .Tasks.Add
oTask.TaskID = "123"
oTask.TaskName = "test task"
'example child object
oTask.User.FirstName = "Test"
oTask.User.LastName = "Person"
Set oTask = Nothing
'example collection
Set oTask = .Tasks.Add
oTask.TaskID = "222"
oTask.TaskName = "second test task"
'example child object
oTask.User.FirstName = "Second"
oTask.User.LastName = "Person"
Set oTask = Nothing
End With
'create serialization object
Set oXmlSerializer = New ComSerialization.XmlSerializer
'return xml
sXML = oXmlSerializer.Serialize(oProject)
Debug.Print sXML
Deserialize 方法
描述
将 XML 文档反序列化为对象引用。
语法
Public Function Deserialize( _
ByVal TargetObject As Object _
ByVal sXML As Object _
) As Boolean
参数
TargetObject
对要反序列化的对象的引用
sXML
要反序列化到对象的 XML 字符串
备注
反序列化限制
- 不支持数组和用户定义类型
- 子对象将仅在属性返回对该对象的有效引用的情况下反序列化
- 要反序列化集合,集合的 add 方法必须返回对已添加到集合的对象的一个有效引用。add 方法不得有任何必需的参数。请注意,集合键将在反序列化时丢失。您可以通过设置
CollectionAddMethod
属性来指定 add 方法的替代方法。
示例
Dim oXmlSerializer As ComSerialization.XmlSerializer
Dim oProject As Project
Set oXmlSerializer = New ComSerialization.XmlSerializer 'create the XmlSerializer
Set oProject = New Project 'create a new object reference
'call deserialize passing in object reference and xml
'sXML is the xml string that was return from Serialize
oXmlSerializer.Deserialize oProject, sXML
'oProject's state should now be the same as it was when we serialized it
结论
希望您发现此组件有用。
Paul Welter
http://www.loresoft.com
历史
- 2003 年 10 月 21 日:初始帖子