【发布时间】:2014-06-22 21:05:55
【问题描述】:
我有一个 BOOKING 类,它继承了一个(消息的)列表 我想知道如何序列化这个。 我的 BOOKING 类包含 Message 的属性和 3 个属性,称为合作伙伴、事务和版本,
我的 Message 类有许多用于创建预订的属性,
现在当我想序列化时,我使用它
Dim z As New BOOKING
Dim x As New Message
z.partner = "company name"
z.transaction = "BOOKING"
z.version = "1.0"
x.MessageType = "C"
x.CustomerNumber = "123"
x.BookingReference = "5845"
x.CustomerBookingReference = "036598"
x.OutwardRoute = "PEMROS"
x.SailingDate = "20120107"
z.Message = x
SaveAsXML(z)
使用下面的另存为xml功能代码
Public Shared Function SaveAsXML(ByRef val As BOOKING)
Try
Dim objStreamWriter As New StreamWriter("c:\ftptest\New Booking\" + val.FileName)
Dim y As New XmlSerializer(val.GetType)
y.Serialize(objStreamWriter, val)
objStreamWriter.Close()
Return True
Catch ex As Exception
Throw ex
End Try
End Function
知道我哪里出错了吗?
我的BOOKING类如下
Public Class BOOKING : Inherits List(Of Message)
Private Property MessageProperty As Message
<XmlAttribute>
Public Property partner As String
<XmlAttribute>
Public Property transaction As String
<XmlAttribute>
Public Property version As String
Public Property Message As Message
Get
Return MessageProperty
End Get
Set(value As Message)
MessageProperty = value
End Set
End Property
这里也是上面代码创建的xml。
<?xml version="1.0" encoding="utf-8"?>
<ArrayOfMessage xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" />
这是我的反序列化代码
Try
Dim Samples As BOOKING
Using objStreamReader As New StreamReader(filepath) 'Path where file is
Dim x As New XmlSerializer(GetType(BOOKING), New XmlRootAttribute("BOOKING"))
Samples = x.Deserialize(objStreamReader)
End Using
Form1.DataGridView1.DataSource = Samples
Return True
Catch ex As Exception
MessageBox.Show(ex.Message)
End Try
【问题讨论】:
-
什么不起作用?你有错误信息吗?
-
嗨,当我没有预订类继承消息时,它会使用上面的代码序列化没有问题,但是当它继承它时,我没有收到任何错误并且没有序列化它仍然会创建 xml 文件但它是空的
-
this的可能重复
-
那个副本似乎也是如何使属性序列化,对不起我对c#不太熟悉。当我在“z.message = x”处使用断点并且 SaveasXML(Z) z.message 具有 xml 的所有要求但它似乎没有将它们传递给 z 本身时,
-
如果您将捕获代码更改为
MessageBox.Show(ex.Message),而不是抛出您正在捕获的相同错误,您将收到正确的错误消息。序列化的一个关键是类和属性上使用的属性。编辑您的帖子以显示Booking的样子。
标签: xml vb.net serialization