internal static MarketplaceAppEntryNode ParseXml(XmlReader reader) { var node = new MarketplaceAppEntryNode(); reader.ReadStartElement(); while (reader.NodeType != XmlNodeType.EndElement) { switch (reader.Name) { case "a:updated": node.Updated = reader.ReadElementContentAsNullable <DateTime>(); break; case "a:title": node.Title = MarketplaceAppContentNode.ParseXml(reader); break; case "a:id": node.Id = reader.ReadElementContentAsUrn(); break; case "version": node.Version = reader.ReadElementContentAsString(); break; case "payloadId": node.PayloadId = reader.ReadElementContentAsUrn(); break; case "skuId": node.SkuId = reader.ReadElementContentAsUrn(); break; case "skuLastUpdated": node.SkuLastUpdated = reader.ReadElementContentAsNullable <DateTime>(); break; case "isAvailableInCountry": node.IsAvailableInCountry = reader.ReadElementContentAsBoolean(); break; case "isAvailableInStore": node.IsAvailableInStore = reader.ReadElementContentAsBoolean(); break; case "isClientTypeCompatible": node.IsClientTypeCompatible = reader.ReadElementContentAsBoolean(); break; case "isHardwareCompatible": node.IsHardwareCompatible = reader.ReadElementContentAsBoolean(); break; case "isBlacklisted": node.IsBlacklisted = reader.ReadElementContentAsBoolean(); break; case "url": node.Url = reader.ReadElementContentAsString(); break; case "packageSize": node.PackageSize = reader.ReadElementContentAsInt(); break; case "installSize": node.InstallSize = reader.ReadElementContentAsInt(); break; case "clientTypes": node.ClientTypes = reader.ReadElementContentAsArray(x => x.ReadElementContentAsString()); break; case "supportedLanguages": node.SupportedLanguages = reader.ReadElementContentAsArray(x => x.ReadElementContentAsString()); break; case "deviceCapabilities": var deviceCapabilitiesString = reader.ReadElementContentAsString(); if (!string.IsNullOrEmpty(deviceCapabilitiesString)) { deviceCapabilitiesString = string.Format("<root>{0}</root>", HttpUtility.HtmlDecode(deviceCapabilitiesString)); using (var stringReader = new StringReader(deviceCapabilitiesString)) { using (var reader2 = XmlReader.Create(stringReader)) { reader2.ReadStartElement(); node.DeviceCapabilities = MarketplaceAppCapabilitiesNode.ParseXml(reader2); reader2.ReadEndElement(); } } } 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.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); }