1

映画とそのカテゴリを表す XML ファイルがあります。各カテゴリには映画のリストがあります。私がやろうとしているのは、このファイルを逆シリアル化し、これをモデルに渡して消費することだけです。同様のスレッドで説明されているように、この同じエラーで XMLRoot および XMLElement タグを使用しましたが、役に立ちませんでした。

デバッガーが停止します

XmlSerializer serializer = new XmlSerializer(typeof(MovieList));

There is an error in XML document (2, 2)」で。

まだ勉強してる。私の推測では、XML 属性タグの位置が間違っています。

XML ファイル

 <?xml version="1.0" ?> 
 <categories  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
      <category>
           <id>1</id>
           <description>action</description>
           <movies>
                <movie>
                     <id>1</id>
                     <name>The Dark Knight</name>
                </movie>
                <movie>
                     <id>2</id>
                     <name>Iron Man</name>
                </movie>
           </movies>
      </category>
      <category>
           <id>2</id>
           <description>comedy</description>
           <movies>
                <movie>
                     <id>1</id>
                     <name>Harold and Kumar</name>
                </movie>
                <movie>
                     <id>2</id>
                     <name>Knocked Up</name>
                </movie>
           </movies>
      </category>
  </categories>

モデル

 XmlRoot("categories")]
 public class MovieList
 {
      [XmlElement("category")]
      public int id { get; set; }
      public string description { get; set; }
      public List<Movie> movies { get; set; }
 }

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

方法

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

0 に答える 0