Represents the contents of the application information from the marketplace.
        internal static MarketplaceAppNode ParseXml(XmlReader reader)
        {
            var node = new MarketplaceAppNode();

            reader.ReadStartElement();

            while (reader.NodeType != XmlNodeType.EndElement)
            {
                switch (reader.Name)
                {
                case "a:updated":
                    node.Updated = reader.ReadElementContentAsNullable <DateTime>();
                    break;

                case "a:title":
                    node.Title = reader.ReadElementContentAsString();
                    break;

                case "a:id":
                    node.Id = reader.ReadElementContentAsUrn();
                    break;

                case "a:content":
                    node.Content = MarketplaceAppContentNode.ParseXml(reader);
                    break;

                case "iapCount":
                    node.IapCount = reader.ReadElementContentAsInt();
                    break;

                case "sortTitle":
                    node.SortTitle = reader.ReadElementContentAsString();
                    break;

                case "releaseDate":
                    node.ReleaseDate = reader.ReadElementContentAsNullable <DateTime>();
                    break;

                case "visibilityStatus":
                    node.VisibilityStatus = reader.ReadElementContentAsString();
                    break;

                case "publisher":
                    node.Publisher = reader.ReadElementContentAsString();
                    break;

                case "averageUserRating":
                    node.AverageUserRating = reader.ReadElementContentAsDouble();
                    break;

                case "userRatingCount":
                    node.UserRatingCount = reader.ReadElementContentAsInt();
                    break;

                case "image":
                    node.Image = MarketplaceAppImageNode.ParseXml(reader);
                    break;

                case "screenshots":
                    node.Screenshots = reader.ReadElementContentAsArray(MarketplaceAppImageNode.ParseXml);
                    break;

                case "categories":
                    node.Categories = reader.ReadElementContentAsArray(MarketplaceAppCategoryNode.ParseXml);
                    break;

                case "tags":
                    node.Tags = reader.ReadElementContentAsArray(x => x.ReadElementContentAsString());
                    break;

                case "taxString":
                    node.TaxString = reader.ReadElementContentAsString();
                    break;

                case "backgroundImage":
                    node.BackgroundImage = MarketplaceAppImageNode.ParseXml(reader);
                    break;

                case "offers":
                    node.Offers = reader.ReadElementContentAsArray(MarketplaceAppOfferNode.ParseXml);
                    break;

                case "publisherId":
                    node.PublisherId = reader.ReadElementContentAsString();
                    break;

                case "publisherGuid":
                    node.PublisherGuid = reader.ReadElementContentAsUrn();
                    break;

                case "a:entry":
                    node.Entry = MarketplaceAppEntryNode.ParseXml(reader);
                    break;

                default:
                    reader.Skip();
                    break;
                }
            }

            reader.ReadEndElement();

            return(node);
        }
        internal static MarketplaceAppNode ParseXml(XmlReader reader)
        {
            var node = new MarketplaceAppNode();

            reader.ReadStartElement();

            while (reader.NodeType != XmlNodeType.EndElement)
            {
                switch (reader.Name)
                {
                    case "a:updated":
                        node.Updated = reader.ReadElementContentAsDateTime();
                        break;

                    case "a:title":
                        node.Title = reader.ReadElementContentAsString();
                        break;

                    case "a:id":
                        node.Id = reader.ReadElementContentAsUrn();
                        break;

                    case "a:content":
                        node.Content = MarketplaceAppContentNode.ParseXml(reader);
                        break;

                    case "iapCount":
                        node.IapCount = reader.ReadElementContentAsInt();
                        break;

                    case "sortTitle":
                        node.SortTitle = reader.ReadElementContentAsString();
                        break;

                    case "releaseDate":
                        node.ReleaseDate = reader.ReadElementContentAsDateTime();
                        break;

                    case "visibilityStatus":
                        node.VisibilityStatus = reader.ReadElementContentAsString();
                        break;

                    case "publisher":
                        node.Publisher = reader.ReadElementContentAsString();
                        break;

                    case "averageUserRating":
                        node.AverageUserRating = reader.ReadElementContentAsDouble();
                        break;

                    case "userRatingCount":
                        node.UserRatingCount = reader.ReadElementContentAsInt();
                        break;

                    case "image":
                        node.Image = MarketplaceAppImageNode.ParseXml(reader);
                        break;

                    case "screenshots":
                        node.Screenshots = reader.ReadElementContentAsArray(MarketplaceAppImageNode.ParseXml);
                        break;

                    case "categories":
                        node.Categories = reader.ReadElementContentAsArray(MarketplaceAppCategoryNode.ParseXml);
                        break;

                    case "tags":
                        node.Tags = reader.ReadElementContentAsArray(x => x.ReadElementContentAsString());
                        break;

                    case "taxString":
                        node.TaxString = reader.ReadElementContentAsString();
                        break;

                    case "backgroundImage":
                        node.BackgroundImage = MarketplaceAppImageNode.ParseXml(reader);
                        break;

                    case "offers":
                        node.Offers = reader.ReadElementContentAsArray(MarketplaceAppOfferNode.ParseXml);
                        break;

                    case "publisherId":
                        node.PublisherId = reader.ReadElementContentAsString();
                        break;

                    case "publisherGuid":
                        node.PublisherGuid = reader.ReadElementContentAsUrn();
                        break;

                    case "a:entry":
                        node.Entry = MarketplaceAppEntryNode.ParseXml(reader);
                        break;

                    default:
                        reader.Skip();
                        break;
                }
            }

            reader.ReadEndElement();

            return node;
        }