2016-09-19 112 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