2011-03-15 126 views
1

所有,我试图序列化和反序列化一个类,并且反序列化失败。有很多类似的线程,但我无法解决这个问题。我收到以下错误“有XML文档(2,2)错误”内部厚望“{”是没有预料到。“}”XML序列化的C#错误“XML文档(2,2)有错误”

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.Xml.Serialization; 

namespace XMLSerialization 
{ 
[System.Xml.Serialization.XmlRootAttribute(Namespace = "", 
    IsNullable = false)] 
public class Level 
{ 
    private String _name; 
    private String _background; 

    public Level() 
    { 
    _name = "LEVEL_NAME"; 
    _background = "LEVEL_BACKGROUND_IMAGE"; 
    } 

    [XmlAttribute("LevelName")] 
    public String LevelName 
    { 
    get { return _name; } 
    set { _name = value; } 
    } 

    [XmlAttribute("Background")] 
    public String Background 
    { 
    get { return _background; } 
    set { _background = value; } 
    } 
} 
} 

这是我使用的反序列化的代码。序列化正常发生,但反序列化没有通过。我认为我犯了一个微不足道的错误,但我无法解决这个问题!

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.IO; 
using System.Xml.Serialization; 

namespace XMLSerialization 
{ 
class Program 
{ 
    static void Main(string[] args) 
    { 
    Level oLevel1 = new Level(); 

    XmlSerializerNamespaces ns = new XmlSerializerNamespaces(); 
    ns.Add("", ""); 
    XmlSerializer serializer = new XmlSerializer(typeof(Level)); 
    TextWriter textWriter = new StreamWriter("Level1.xml"); 
    serializer.Serialize(textWriter, oLevel1, ns); 
    textWriter.Close(); 

    Level oLevel2 = new Level(); 
    XmlSerializer deserializer = new XmlSerializer(typeof(List<Level>)); 
    TextReader textReader = new StreamReader("Level1.xml"); 
    oLevel2 = (Level)deserializer.Deserialize(textReader); 
    textReader.Close(); 
    } 
} 
} 

回答

8

我认为你需要更改线路

XmlSerializer deserializer = new XmlSerializer(typeof(List<Level>)); 

XmlSerializer deserializer = new XmlSerializer(typeof(Level)); 
+0

不应该在深夜进行编程!谢谢......认为这将是一个愚蠢的。 – infinity 2011-03-16 00:12:45

+0

哈哈。诚然。玩的开心。 – Lav 2011-03-16 01:13:07

+0

Beeootiful。谢谢! – 2014-10-19 14:02:39

3

你一个序列化Level并试图deserizalize一个List<Level>