private static void AlbumSetup(Song song, XmlElement element) { foreach (XmlNode release in element) { Album album = new Album(Guid.Parse(release.Attributes["id"].Value)); foreach (XmlElement releaseElement in release) { switch (releaseElement.Name.Trim().ToLowerInvariant()) { case "title": album.Title = releaseElement.InnerText.Trim(); break; case "status": album.Status = (Status)Enum.Parse(typeof(Status), releaseElement.InnerText); break; case "artist-credit": Artist artist = new Artist(Guid.Parse(releaseElement.ChildNodes[0].ChildNodes[0].Attributes["id"].Value)) { ArtistName = releaseElement.ChildNodes[0].ChildNodes[0].ChildNodes[0].ChildNodes[0].Value.Trim() }; album.Artists.Add(artist); break; case "release-group": foreach (XmlElement releaseGroup in releaseElement) { switch (releaseGroup.Name.Trim().ToLowerInvariant()) { case "primary-type": album.PrimaryType = (ReleaseType)Enum.Parse(typeof(ReleaseType), releaseGroup.InnerText.Trim()); break; case "secondary-type-list": album.SecondaryType = (ReleaseType)Enum.Parse(typeof(ReleaseType), releaseGroup.ChildNodes[0].InnerText.Trim()); break; default: break; } } break; case "date": try { album.ReleasedDate = DateTime.Parse(release.InnerText); } catch { } break; case "country": album.Country = releaseElement.InnerText.Trim(); break; case "medium-list": foreach (XmlElement mediumList in releaseElement.ChildNodes) { if (mediumList.Name.Trim().Equals("track-count", StringComparison.InvariantCultureIgnoreCase)) { album.TrackCount = Convert.ToByte(mediumList.InnerText); } else if (mediumList.Name.Trim().Equals("medium", StringComparison.InvariantCultureIgnoreCase)) { foreach (XmlElement medium in mediumList.ChildNodes) { switch (medium.Name.Trim().ToLowerInvariant()) { case "format": album.Format = medium.InnerText.Trim(); break; case "track-list": XmlReader reader = XmlReader.Create(new StringReader(medium.InnerXml)); XmlSerializer ser = new XmlSerializer(typeof(Track)); Track track = (Track)ser.Deserialize(reader); album.Tracks.Add(track); reader.Close(); break; default: break; } } } } break; default: break; } } song.Albums.Add(album); } }
/// <summary> /// /// </summary> /// <param name="artist"></param> /// <returns></returns> private static Artist ArtistSetup(XmlElement artist) { Artist songArtist = new Artist(Guid.Parse(artist.ChildNodes[0].ChildNodes[0].Attributes["id"].Value)) { ArtistName = artist.ChildNodes[0].ChildNodes[0].ChildNodes[0].InnerText.Trim() }; return songArtist; }