我有一个自定义的XML文件,看起来像这样,里面有一些'n‘项。我试图将所有的值加载到lst变量上,并对它执行一个foreach循环,以便进一步处理……
<ItemInfo>
<StartTime>2014-06-16T00:00:00</StartTime>
<EndTime>2014-06-16T23:59:59</EndTime>
<Text>Calendar Project Started</Text>
<A>255</A>
<R>255</R>
<G>0</G>
<B>0</B>
</ItemInfo>
<ItemInfo>
<StartTime>2014-08-02T00:00:00</StartTime>
<EndTime>2014-08-02T23:59:59</EndTime>
<Text>First Release</Text>
<A>255</A>
<R>255</R>
<G>0</G>
<B>0</B>
</ItemInfo>我正在尝试使用Deserialze()方法解析它们。
Private Sub Form4_Load(sender As Object, e As EventArgs) Handles MyBase.Load
Dim fi As System.IO.FileInfo = New IO.FileInfo(System.IO.Path.Combine(Application.StartupPath, "items.xml"))
If fi.Exists Then
Dim lst As New List(Of ItemInfo)
Dim serializer As New XmlSerializer(GetType(ItemInfo))
Dim fs As New IO.FileStream("items.xml", IO.FileMode.Open)
Dim reader As System.Xml.XmlReader = System.Xml.XmlReader.Create(fs)
lst = CTypeDynamic(serializer.Deserialize(reader), lst.GetType) '->Invalid cast Exception
fs.Close()
End If
End Sub自定义类如下:
Public Class ItemInfo
Public StartTime As DateTime
Public EndTime As DateTime
Public Text As String
Public A As Int32
Public R As Int32
Public G As Int32
Public B As Int32
Dim pattern As HatchStyle
Dim patternColor As Color
Public Sub ItemInfo(startTime As DateTime, endTime As DateTime, text As String, color As Color)
startTime = startTime
endTime = endTime
text = text
A = color.A
R = color.R
G = color.G
B = color.B
End Sub
End Class例外消息是:
从类型'ItemInfo‘到类型'List(Of ItemInfo)’的转换无效。
对于我在哪里做错误有什么建议吗?
发布于 2014-06-02 10:03:20
您使用错误的类型初始化XmlSerializer。
您的XML包含一个项数组,并且尝试将其反序列化为一个List(Of ItemInfo),因此您应该使用:
Dim serializer As New XmlSerializer(lst.GetType())而不是
Dim serializer As New XmlSerializer(GetType(ItemInfo))反序列化为List(Of ItemInfo),而不是一个ItemInfo。
https://stackoverflow.com/questions/23991443
复制相似问题