-
Code's Tags
-
Your Codes
-
Reffers
-
Linked Codes
|
Code:
Short link for Twitter:
HTML:
HTML view:
Copy Source | Copy HTML using System; using System.Collections.Generic; using System.Diagnostics.CodeAnalysis; using System.IO; using System.Text.RegularExpressions; using System.Xml; using System.Xml.Serialization; namespace BlogsAPI.BlogsYandex { /// <summary> /// Один из ТОПов Яндекса /// </summary> [Serializable] [XmlRoot(ElementName = "rss", IsNullable = false)] public class TOP30Result { public TopType type = TopType.main; public TOP30Result() { } [XmlElement("channel")] public TOP30Channel channel; #region Десериализация private static Regex rAvatar = new Regex(@"<img[^>]+?>", RegexOptions.IgnoreCase | RegexOptions.Compiled); /// <summary> /// Получение объекта из XML'a /// </summary> /// <returns></returns> public static TOP30Result XMLDeserialize(MemoryStream ms) { TOP30Result rss = (TOP30Result)Deserialize(typeof(TOP30Result), ms); if (rss.channel != null && rss.channel.tops != null) { foreach (TOPResult top in rss.channel.tops) { //но надо еще вырезать аватарку... if (!String.IsNullOrEmpty(top.blogavat)) { Match m = rAvatar.Match(top.blogavat); top.blogavat = m.Success ? m.Groups[0].ToString() : ""; } } } return rss; } /// <summary> /// Десериализация /// </summary> /// <param name="t">тип объекта</param> /// <param name="ms">буфер чтения</param> /// <returns></returns> protected static object Deserialize(Type t, MemoryStream ms) { XmlSerializer deserializer = new XmlSerializer(t); //чтобы не вылетало исключение при неизвестном элементе deserializer.UnknownNode += new XmlNodeEventHandler(deserializer_UnknownNode); deserializer.UnknownAttribute += new XmlAttributeEventHandler(deserializer_UnknownAttribute); return deserializer.Deserialize(ms); } private static void deserializer_UnknownNode(object sender, XmlNodeEventArgs e) { } private static void deserializer_UnknownAttribute (object sender, XmlAttributeEventArgs e) { } #endregion } /// <summary> /// Один из ТОПов Яндекса /// </summary> [Serializable] public class TOP30Channel { public TOP30Channel() { } private List<TOPResult> _tops; /// <summary> /// Gets or sets the items. /// </summary> /// <value>The items.</value> [SuppressMessage("Microsoft.Design", "CA1002:DoNotExposeGenericLists"), XmlElement("item")] public List<TOPResult> tops { get { return _tops; } set { _tops = value; } } } /// <summary> /// Запись попавшая в ТОП яндекса /// </summary> public class TOPResult { /// <summary> /// кол-во ссылок /// </summary> [XmlElement(ElementName = "links", Type = typeof(int), Namespace = "urn:yandex-blogs")] public int iLinks = -1; /// <summary> /// кол-во комментов /// </summary> [XmlElement(ElementName = "comments", Type = typeof(int), Namespace = "urn:yandex-blogs")] public int iComms = -1; /// <summary> /// кол-во просмотров /// </summary> [XmlElement(ElementName = "lastvisitors", Type = typeof(int), Namespace = "urn:yandex-blogs")] public int iViews = -1; /// <summary> /// ссылка на пост /// </summary> [XmlElement(ElementName = "link")] public string bloglink = null; /// <summary> /// аватарка <img.*?> /// </summary> [XmlElement(ElementName = "description")] public string blogavat = null; /// <summary> /// заголовок поста /// </summary> [XmlElement(ElementName = "title")] public string topname = null; /// <summary> /// Конструктор /// </summary> public TOPResult() { } } }
|