Ошибка C # с сериализацией XML «В документе XML есть ошибка (2, 2)» - PullRequest
1 голос
/ 15 марта 2011

Все, я пытаюсь сериализовать и десериализовать класс, и десериализация терпит неудачу.Существует множество похожих тем, но я не могу решить эту проблему.Я получаю следующую ошибку: «В 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();
  }
 }
}

Ответы [ 2 ]

8 голосов
/ 15 марта 2011

Я думаю, вам нужно изменить строку

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

На

XmlSerializer deserializer = new XmlSerializer(typeof(Level));
3 голосов
/ 15 марта 2011

Вы сериализуете Level и пытаетесь десериализировать List<Level>.

...