12 Ocak 2015

Boş laflarla uğraşmayın. Basit ve hızlı google haber site haritası hazırlama C#.

public class News
{
 public int Id { get; set; }
 public string Title { get; set; }
 public string Spot { get; set; }
 public string Body { get; set; }
 public DateTime CDate { get; set; }
 public string Picture { get; set; }
 public string Seo { get; set; }
}

public class SiteMap
{
 public string GetGoogleSiteMap(string type)
 {
  var stringWriter = new StringWriter();
  var writer = new XmlTextWriter(stringWriter);
  writer.WriteProcessingInstruction("xml", "version=\"1.0\" encoding=\"UTF-8\"");
  writer.WriteStartElement("urlset");
  writer.WriteAttributeString("xmlns", "http://www.google.com/schemas/sitemap/0.9");
  writer.WriteAttributeString("xmlns:image", "http://www.google.com/schemas/sitemap-image/1.1");
  writer.WriteAttributeString("xmlns:news", "http://www.google.com/schemas/sitemap-news/0.9");
  
  var data = DataProvider.SelectData.News.NewsNForSiteMap("1000");
  
  foreach (var news in data)
  {
   writer.WriteStartElement("url");
   writer.WriteElementString("changefreq", "hourly");
   writer.WriteElementString("priority", "1.0");
   writer.WriteElementString("loc", "http://www.kerimcalik.com/haber/" + news.Seo + ".htm");

   if (!string.IsNullOrEmpty(news.Picture))
   {
    writer.WriteStartElement("image:image");
    writer.WriteElementString("image:loc", "http://www.kerimcalik.com" + news.Picture);
    writer.WriteElementString("image:title", news.Title);
    writer.WriteElementString("image:caption", news.Spot);
    writer.WriteEndElement();
   }

   writer.WriteStartElement("news:news");
   writer.WriteStartElement("news:publication");
   writer.WriteElementString("news:name", "Haberler - Kerim ÇALIK");
   writer.WriteElementString("news:language", "tr");
   writer.WriteEndElement();
   writer.WriteElementString("news:genres", "Blog, UserGenerated");
   writer.WriteElementString("news:publication_date", string.Format("{0:yyyy-MM-ddThh:mm:ss+00:00}", news.CDate));
   writer.WriteElementString("news:title", news.Title);

   var tags = DataProvider.SelectData.TagsPool(news.Id.ToString(), Enums.Tables.News, (int)Enums.Objects.News);
   var keywords = string.Empty;

   for (var i = 0; i < tags.Rows.Count; i++)
   {
    keywords += tags.Rows[i]["name"] + ",";
   }

   if (!string.IsNullOrEmpty(keywords))
   {
    writer.WriteElementString("news:keywords", keywords.Substring(0, keywords.Length - 1));   
   }

   writer.WriteEndElement();
   writer.WriteEndElement();
  }

  writer.WriteEndElement();
  writer.Close();

  return stringWriter.ToString();
 }
}

Tagged: ,

0 yorum:

Yorum Gönder