private Recording ParseRecording(XElement node)
{
int duration;
string id, title;
TryParseChild(node, "id", out id);
TryParseChild(node, "title", out title);
TryParseChild(node, "duration", 0, out duration);
var recording = new Recording(duration, id, title);
var e = node.Element("artists");
if (e != null)
{
var list = e.Elements("artist");
foreach (var item in list)
{
recording.Artists.Add(ParseArtist(item));
}
}
e = node.Element("releasegroups");
if (e != null)
{
var list = e.Elements("releasegroup");
foreach (var item in list)
{
recording.ReleaseGroups.Add(ParseReleaseGroup(item));
}
}
e = node.Element("releases");
if (e != null)
{
var list = e.Elements("release");
foreach (var item in list)
{
recording.Releases.Add(ParseRelease(item));
}
}
// TODO: parse more meta
return recording;
}