2016-09-19 26 views
0

我試圖設置我的第一個導出/導入/從外部XML文件的列表。在開始我有以下代碼:XML文檔的序列化(System.InvalidOperationException)

 private void Form1_Load(object sender, EventArgs e) 
    { 
     string path = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData); 
     if (!Directory.Exists("C:\\Temp")) 
      Directory.CreateDirectory("C:\\Temp"); 
     if (!File.Exists("C:\\Temp\\mygames.xml")) 
      File.Create("C:\\Temp\\mygames.xml").Close(); 
     //Call method to read data from XML to List<> 
     videogame = ReadFromXmlFile<List<vglist>>("C:\\Temp\\mygames.xml"); 
     displayList(); 
    } // END of method Form1_Load 

隨着ReadFromXmlFile方法如下:

public static T ReadFromXmlFile<T>(string filePath) where T : new() 
    { 
     TextReader reader = null; 
     try 
     { 
      var serializer = new XmlSerializer(typeof(T)); 
      reader = new StreamReader(filePath); 
      return (T)serializer.Deserialize(reader); 
     } // end try 
     finally 
     { 
      if (reader != null) 
       reader.Close(); 
     } // end finally 
    } // END ReadFromXmlFile<T> method 

,但我一直當該程序執行了以下錯誤:

拋出異常:「 System.Xml.dll中的System.InvalidOperationException'

在System.Xml.dll中發生未處理的類型System.InvalidOperationException異常

附加信息:XML文檔(0,0)中存在錯誤。

我的班級設置如下:

public class vglist 
{ 
    [XmlElement("gameName")] // XML tag 
    public string GameName // game field 
    { 
     get; 
     set; 
    } 
etc... 

任何想法?我在世界各地搜索類似的問題,但沒有解決方案正在幫助。

+0

請發佈XML(或近似示例),因爲這也可能與發現任何分析問題有關。 – ryancdotnet

+0

我試圖填充的XML文件是在啓動時創建的,但是當我遇到錯誤時它永遠不會填充。 – Madrical

回答

1

看起來如果文件不存在,則創建一個新的空白XML文件。我懷疑你的錯誤是由於沒有包含任何內容的XML文件。

+0

XML文件mygames.xml確實是空白的。從我所蒐集的內容來看,最初的代碼只是在文件不存在的情況下創建,然後一旦完成,它就會使用從程序中輸入的數據填充XML文件。 – Madrical

+0

@Madrical你是正確的,但你提供的片段只顯示閱讀,不寫。以下是更多信息的MSDN鏈接https://msdn.microsoft.com/en-us/library/mt656715.aspx – jbmintjb

相關問題