De-Serializing Class
[XmlRoot(ElementName = "sgr")]
public class SongGroup
{
public SongGroup()
{
this.Songs = new List<Song>();
}
[XmlElement(ElementName = "sgs")]
public List<Song> Songs { get; set; }
}
[XmlRoot(ElementName = "g")]
public class Song
{
[XmlElement("a")]
public string Artist { get; set; }
[XmlElement("s")]
public string SongTitle { get; set; }
}
C# Code
static void Main(string[] args)
{
SongGroup songs = new SongGroup();
for(int i =0; i<5;i++)
{
Song song = new Song();
song.Artist = "Artist " + i;
song.SongTitle = "Title " + i;
songs.Songs.Add(song);
}
SaveSongs(songs);
}
public static bool SaveSongs(SongGroup songs)
{
XmlSerializer serializer = new XmlSerializer(typeof(SongGroup));
using (TextWriter textWriter = new StreamWriter("mysongxml.xml"))
{
serializer.Serialize(textWriter, songs);
}
//var xDocument = XDocument.Load("mysongxml2.xml"); // need to it working
var xDocument = XDocument.Load("mysongxml.xml"); //works fine
string xmlString = xDocument.ToString();
var serializer2 = new XmlSerializer(typeof(SongGroup));
var reader = new StringReader(xmlString);
var instance = (SongGroup)serializer2.Deserialize(reader);
return true;
}
mysongxml.xml
<?xml version="1.0" encoding="utf-8"?>
<sgr xmlns:xsi="http://ift.tt/ra1lAU" xmlns:xsd="http://ift.tt/tphNwY">
<sgs>
<a>Artist 0</a>
<s>Title 0</s>
</sgs>
<sgs>
<a>Artist 1</a>
<s>Title 1</s>
</sgs>
<sgs>
<a>Artist 2</a>
<s>Title 2</s>
</sgs>
<sgs>
<a>Artist 3</a>
<s>Title 3</s>
</sgs>
<sgs>
<a>Artist 4</a>
<s>Title 4</s>
</sgs>
</sgr>
mysongxml2.xml
<?xml version="1.0" encoding="utf-8"?>
<ArrayOfSong xmlns:xsi="http://ift.tt/ra1lAU" xmlns:xsd="http://ift.tt/tphNwY">
<Song>
<Artist>Artist 0</Artist>
<SongTitle>Title 0</SongTitle>
</Song>
<Song>
<Artist>Artist 1</Artist>
<SongTitle>Title 1</SongTitle>
</Song>
<Song>
<Artist>Artist 2</Artist>
<SongTitle>Title 2</SongTitle>
</Song>
<Song>
<Artist>Artist 3</Artist>
<SongTitle>Title 3</SongTitle>
</Song>
<Song>
<Artist>Artist 4</Artist>
<SongTitle>Title 4</SongTitle>
</Song>
</ArrayOfSong>
My problem is that when the root name is sgr
everything works fine but I need the same to get working with ArrayOfSong
as well.
Thanks,
Tiada ulasan:
Catat Ulasan