序列化 根级别上的数据无效。 行 1,位置 1

来源:互联网 发布:网页内容抓取软件 编辑:程序博客网 时间:2024/06/06 05:38

最近在做反序列化的时候遇到过     根级别上的数据无效。 行 1,位置 1

最后发现是在序列化的时候代码不标准所致

序列化代码:

    ''' <summary>    ''' 将Pack文件保存到本地文件,并返回文件名    ''' </summary>    ''' <param name="pk">List(Of PackageData)</param>    ''' <param name="fileName">fileName</param>    ''' <returns></returns>    ''' <remarks></remarks>    Public Shared Function SavePackToFile(ByVal pk As List(Of PackageData), Optional ByVal fileName As String = "") As String        Try            If fileName.Trim.Length <= 0 Then fileName = Guid.NewGuid().ToString + ".pak"            Dim destFile As String = AppDomain.CurrentDomain.BaseDirectory + "\Download\" + fileName            Dim ser As New DataContractSerializer(GetType(List(Of PackageData)))            Dim wx As New Xml.XmlTextWriter(destFile, System.Text.Encoding.UTF8)            ser.WriteObject(wx, pk)            wx.Close()        Catch ex As Exception            Throw ex        End Try        Return fileName    End Function

反序列化:

    ''' <summary>    ''' 反序列化PackageData    ''' </summary>    ''' <param name="s"></param>    ''' <returns></returns>    ''' <remarks></remarks>    Public Shared Function Deserialize(ByVal s As String) As List(Of PackageData)        Try            Dim txter As TextReader = New StringReader(s.Trim())            Dim reader As New XmlTextReader(txter)            Dim ser As New DataContractSerializer(GetType(List(Of PackageData)))            Dim datas As List(Of PackageData) = CType(ser.ReadObject(reader), List(Of PackageData))            reader.Close()            txter.Close()            Return datas        Catch ex As Exception            Throw ex        End Try        Return Nothing    End Function

这样之后不会再报错了。


<script type="text/javascript"><!--google_ad_client = "ca-pub-1944176156128447";/* cnblogs 首页横幅 */google_ad_slot = "5419468456";google_ad_width = 728;google_ad_height = 90;//--></script><script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script>