Source Code for Me (s-c.me)

Allows you to paste souce code to blogs! Adapted for Twitter! Here is Search Form in case you missed your code.
Code:
Selected Language:
Show Linenumbers:
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()
        {
        }
 
    }
 
}




Based on Manoli.Net's CodeFormatter. Made by Topbot (c) 2008-2012