0

次のエラーが発生します。他のスレッドから、これには多くの理由が考えられるようです。コードはできるだけシンプルにしています。

    There is an error in XML document (2, 2).

    public class MovieSummary
    {
         public List<Movie> Movies { get; set; }
    }

    public class Movie
    {
         public int id { get; set; }
         public string name { get; set; }
    }


    public static MovieSummary Deserialize()
    {
        using (TextReader reader = new StreamReader("c:\\movies.xml"))
        {
            XmlSerializer serializer = new XmlSerializer(typeof(MovieSummary));
            return (MovieSummary)serializer.Deserialize(reader);
        }
    }

    public ActionResult GetListOfMovies()
    {
        MovieSummary summary = Deserialize();
        return View(summary);
    }

    <?xml version="1.0" ?> 
    <movies xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
     <movie>
      <id>1</id>
      <name>The Dark Knight</name>
     </movie>
    </movies>
4

1 に答える 1

0

ルート オブジェクトのタイプは MovieSummary です。したがって、シリアライザーはルート<MovieSummary>要素を期待しています。XmlRoot および XmlElement 属性を使用して、xml 内の要素の名前を変更します。

[XmlRoot("movies")]
public class MovieSummary
{
    [XmlElement("movie")]
    public List<Movie> Movies { get; set; }
}


public class Movie
{
    public int id { get; set; }
    public string name { get; set; }
}
于 2013-07-06T03:10:22.257 に答える