【发布时间】:2011-09-12 18:53:49
【问题描述】:
我正在尝试将 XML 文件反序列化为几个类对象:艺术家、专辑和歌曲
这是当前的设置:
static void Main(string[] args)
{
var riseAgainst = DeSerializer(CreateElement());
Console.WriteLine(string.Format("Band: {0}",riseAgainst.Name));
Console.WriteLine("-----------------------------");
Console.WriteLine(string.Format("Album: {0}",riseAgainst.Album.Name));
Console.WriteLine("-----------------------------");
Console.WriteLine("Song List:\r");
foreach(var s in riseAgainst.Album.Songs)
{
Console.WriteLine(string.Format("Song: {0}", s));
}
Console.ReadLine();
}
static XElement CreateElement()
{
return new XElement("Artist",
new XElement("Name", "Rise Against"),
new XElement("Album",
new XElement("Name", "Appeal to Reason"),
new XElement("Songs",
new XElement("Song", "Hero of War"),
new XElement("Song", "Savior"))
)
);
}
static Artist DeSerializer(XElement element)
{
var serializer = new XmlSerializer(typeof(Artist));
return (Artist)serializer.Deserialize(element.CreateReader());
}
}
public class Artist
{
public string Name { get; set; }
public Albums Album { get; set; }
}
public class Albums
{
public string Name { get; set; }
public Songs Songs { get; set; }
}
public class Songs
{
public string Song { get; set; }
}
我目前遇到的问题是,如果有多个艺术家、专辑和/或歌曲,那么它只会填充第一个。我怎样才能让它填满专辑的所有内容,或者艺术家的所有歌曲......等等我尝试将它们设置为数组,但它没有用。提前致谢。
【问题讨论】:
-
向我们展示一个超过位艺术家的列表,以及反序列化代码。提示:你也有
Artists类吗?
标签: c# xml xml-deserialization