private WindowsPhoneStoreServiceAppNode WebRequestEndGetResponse(IAsyncResult asyncResult) { var request = (WebRequest)asyncResult.AsyncState; using (var response = (HttpWebResponse)request.EndGetResponse(asyncResult)) { if (response.StatusCode != HttpStatusCode.OK) { throw new WebException("Http Error: " + response.StatusCode); } using (var outputStream = response.GetResponseStream()) { using (var reader = XmlReader.Create(outputStream, new XmlReaderSettings { IgnoreWhitespace = true, IgnoreComments = true })) { return(WindowsPhoneStoreServiceAppNode.ParseXml(reader)); } } } }
internal static WindowsPhoneStoreServiceAppNode ParseXml(XmlReader reader) { var node = new WindowsPhoneStoreServiceAppNode(); 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 = WindowsPhoneStoreServiceAppContentNode.ParseXml(reader); break; case "iapCount": node.IapCount = reader.ReadElementContentAsInt(); break; case "userRatingCountDistributions": node.UserRatingCountDistributions = WindowsPhoneStoreServiceAppRatingsDistributionsNode.ParseXml(reader); 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 = WindowsPhoneStoreServiceAppImageNode.ParseXml(reader); break; case "screenshots": node.Screenshots = reader.ReadElementContentAsArray(WindowsPhoneStoreServiceAppImageNode.ParseXml); break; case "categories": node.Categories = reader.ReadElementContentAsArray(WindowsPhoneStoreServiceAppCategoryNode.ParseXml); break; case "tags": node.Tags = reader.ReadElementContentAsArray(x => x.ReadElementContentAsString()); break; case "taxString": node.TaxString = reader.ReadElementContentAsString(); break; case "backgroundImage": node.BackgroundImage = WindowsPhoneStoreServiceAppImageNode.ParseXml(reader); break; case "offers": node.Offers = reader.ReadElementContentAsArray(WindowsPhoneStoreServiceAppOfferNode.ParseXml); break; case "publisherId": node.PublisherId = reader.ReadElementContentAsString(); break; case "publisherGuid": node.PublisherGuid = reader.ReadElementContentAsUrn(); break; case "a:entry": node.Entry = WindowsPhoneStoreServiceAppEntryNode.ParseXml(reader); break; case "isUniversal": node.IsUniversal = reader.ReadElementContentAsBoolean(); break; default: reader.Skip(); break; } } reader.ReadEndElement(); return node; }
internal static WindowsPhoneStoreServiceAppNode ParseXml(XmlReader reader) { var node = new WindowsPhoneStoreServiceAppNode(); 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 = WindowsPhoneStoreServiceAppContentNode.ParseXml(reader); break; case "iapCount": node.IapCount = reader.ReadElementContentAsInt(); break; case "userRatingCountDistributions": node.UserRatingCountDistributions = WindowsPhoneStoreServiceAppRatingsDistributionsNode.ParseXml(reader); 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 = WindowsPhoneStoreServiceAppImageNode.ParseXml(reader); break; case "screenshots": node.Screenshots = reader.ReadElementContentAsArray(WindowsPhoneStoreServiceAppImageNode.ParseXml); break; case "categories": node.Categories = reader.ReadElementContentAsArray(WindowsPhoneStoreServiceAppCategoryNode.ParseXml); break; case "tags": node.Tags = reader.ReadElementContentAsArray(x => x.ReadElementContentAsString()); break; case "taxString": node.TaxString = reader.ReadElementContentAsString(); break; case "backgroundImage": node.BackgroundImage = WindowsPhoneStoreServiceAppImageNode.ParseXml(reader); break; case "offers": node.Offers = reader.ReadElementContentAsArray(WindowsPhoneStoreServiceAppOfferNode.ParseXml); break; case "publisherId": node.PublisherId = reader.ReadElementContentAsString(); break; case "publisherGuid": node.PublisherGuid = reader.ReadElementContentAsUrn(); break; case "a:entry": node.Entry = WindowsPhoneStoreServiceAppEntryNode.ParseXml(reader); break; case "isUniversal": node.IsUniversal = reader.ReadElementContentAsBoolean(); break; default: reader.Skip(); break; } } reader.ReadEndElement(); return(node); }