2013-10-22 214 views
-1

我有一個asp.net 2.0網站。 我正在使用Deserialize方法來反序列化xml。 我得到這個錯誤在執行xml的DeSerialization時遇到錯誤「xml文檔(1 40)有錯誤」

「有XML文檔中的錯誤(1 40)」

public List<Test_XML> DeSerializeObject(string pstrXML) 
{ 
    List<Test_XML> _obj = new List<Test_XML>(); 
    try 
    { 
     if (!string.IsNullOrEmpty(pstrXML)) 
     { 
      XmlSerializer _xmlSerializer = new XmlSerializer(typeof(List<Test_XML>)); 
      StringReader _strReader = new StringReader(pstrXML); 
      _obj = (List<Test_XML>)_xmlSerializer.Deserialize(_strReader); 
     } 
     return _obj; 
    } 
    catch (Exception e) 
    { 
     throw e; 
    } 
    finally 
    { 
     _obj = null; 
    } 
} 
+3

您可能想要包含該位XML文檔。 – NomadTraveler

+0

你也可以快速檢查它,在瀏覽器中打開你的XML,如果它打開正確,那麼你可能需要查看代碼,但我想你的XML有問題。 –

+1

此外,我懷疑錯誤消息實際上包含比這更多的信息。你可以通過刪除毫無意義的try/catch/finally塊來讓你的方法縮小一半大小 - 它基本上等同於擁有try塊的主體(但更糟糕的是,當你重新拋出異常時,你實際上正在失去有用的堆棧跟蹤信息)。你很少需要像這樣將變量設置爲null - 當然不是方法結尾的局部變量。 –

回答

0

嘗試thing..i havnt下方勾選它雖然和仍然沒有工作,然後有在您的XML文件中出現錯誤

var serializer = new XmlSerializer(typeof(List<Test_XML>)); 

    List<Test_XML> _obj; 

    using(var stream = new StringReader(pstrXML)) 
    using(var reader = XmlReader.Create(stream)) 
    { 
     _obj= (List<Test_XML>)serializer.Deserialize(reader); 
    }