映画とそのカテゴリを表す 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);
}
}