Sosyal medya bu aralar çok gündemde, hem yazılımcılar hem de diğer insanlar için hayatı değiştirdi.
aşağıda twitter hesabınıza otomatik olarak twit atan bir modül vermeyi uygun bulmuştum ama yeteri vakit bulamadığım için şimdilik nopcommerce için yazdığım socialnetwork plugin ninde kullandığım bir modülü paylaşıyorum. İlerde detaylı anlatımla daha basit bir moülü burada paylaşmayı planlıyorum
public string TweetAll(string gtin= null, int? max = 0)
{
IList<Nop.Web.Models.Catalog.ProductOverviewModel> model = new List<Nop.Web.Models.Catalog.ProductOverviewModel>();
var query = from p in _productRepository.Table
orderby p.DisplayOrder, p.CreatedOnUtc descending
where p.Published &&
!p.Deleted
select p;
var productOverviewModel = _productModelFactory.PrepareProductOverviewModels(query.ToList());
int count = 0;
bool exit = String.IsNullOrEmpty(isbn);
foreach (var epub in productOverviewModel)
{
//if (count < begin) continue;
if (!exit && (epub.Gtin == gtin))
{
exit = true;
continue;
}
if (!exit) continue;
if (count >= max) break;
count++;
var client = new Twitter(PluginConfiguration.socialNetwork.twitter.consumerKey, PluginConfiguration.socialNetwork.twitter.consumerSecret,
PluginConfiguration.socialNetwork.twitter.accessToken,
PluginConfiguration.socialNetwork.twitter.accessTokenSecret);
string tweetText = epub.Name + "\n";
tweetText += PluginConfiguration.socialNetwork.LocalUrl + epub.SeName + "\n";
string picUrl = epub.DefaultPictureModel.ImageUrl.Replace("http://localhost:15536", PluginConfiguration.socialNetwork.LocalUrl);
tweetText += Nop.Core.Html.HtmlHelper.StripTags(epub.FullDescription);
var ret=client.PublishToTwitter(tweetText, picUrl);
System.Threading.Thread.Sleep(30000);
}
return count.ToString();
}
Modul verilen gtin değerini veritabanında arıyor. O gtin e sahip üründen başlayarak verilen max değeri kadar ürünün açıklamasını ve resmini twittera yolluyor.
Oldukça işime yaramıştı.
Günde 300 den fazla twitt atarsanız bazen server banlıyor ve telefon ile onay istiyor
meraklısı için buradan twitter aplication kodu alabilirsiniz.
epub sitemi ziyaret etmenizi ve twitterda beğenmeyi unutmazsanız sevinirim.
epubevi.com
twitter.com/epubevi
Kendinize iyi bakın
Serdar GÜNER
Birazda programcılık
Yazılım hakkında ilgimi çeken herşey
5 Ocak 2018 Cuma
21 Kasım 2016 Pazartesi
MVC de Resim Ölçeklendirme
Web sitelerinde resim dosyalarının en,boy ve büyüklüklerini optimize etmek, yükleme zamanını çok azaltır. Resim yoğunluklu
sitelerde, bu azalma herşey demektir.
170 KB tutan png uzantılı bir dosya %90 küçültürek 17 KB ik bir jpeg uzantılı dosya haline getirilebilir.
Bu işlem, serverın işlemci yükünün artmasına sebeb olsada, yükleme hızını çok arttırmasınından dolayı server yükü kabul edilebir bir maliyet olarak görülür.
klasik bir html tagı olan img ye bir bakalım. Bu tagın src özelliği görüntülecek dosyanın yolunu belitir.
<img src="/Content/Image/test.png">
test.png dosyasının 170 kb uzunluğunda olduğunu varsayalım.
ilk önce route işlemimizi yapalım
routes.MapRoute("ImageResize",
"GenelUtil/ImageResize/{width}x{height}/{imageName}",
new { controller = "FrontPage", action = "ImageResize", keyWord = UrlParameter.Optional },
new[] { "Genorobotic.Plugin.NewsPaper.Controllers" }
);
sonra GenelUtil isimli controler da aağıdaki actionı yaratalım
public ActionResult ImageResize(int width,int height,string imageName)
{
Image srcImage = null;
string fileNotFoundPath = null;
string imageFile = null;
try
{
imageFile = Server.MapPath(""~/Content/Image/"+imageName);
fileNotFoundPath = Server.MapPath("~/Content/Image/fileNotFound.jpg");
srcImage = Image.FromFile(imageFile);
}
catch (FileNotFoundException ex)
{
srcImage = Image.FromFile(fileNotFoundPath);
}
catch (Exception ex)
{
return null;
}
using (var newImage = new Bitmap(width, height))
using (var graphics = Graphics.FromImage(newImage))
using (var stream = new MemoryStream())
{
graphics.SmoothingMode = SmoothingMode.AntiAlias;
graphics.InterpolationMode = InterpolationMode.HighQualityBicubic;
graphics.PixelOffsetMode = PixelOffsetMode.HighQuality;
graphics.DrawImage(srcImage, new Rectangle(0, 0, width, height));
newImage.Save(stream, System.Drawing.Imaging.ImageFormat.Jpeg);
return File(stream.ToArray(), "image/jpeg");
}
}
Server tarafında işimiz bitti. artık client tarafında
<img src="/GenelUtil/ImageResize/300x200/test.png">
yazdığımızda test.png dosyasını yeni ölçeklendirip 300x200 oyutlarında, jpeg formatında bir dosya haline getirecetir.
170 KB dosya 10 KB civarına inecek buda yüklenme süresini çok kısaltacaktır.
Aşağıda linki verilen site bu action ı kullanmaktadır
epubevi.com
Sağlıcakla Kalın
Serdar GÜNER
sitelerde, bu azalma herşey demektir.
170 KB tutan png uzantılı bir dosya %90 küçültürek 17 KB ik bir jpeg uzantılı dosya haline getirilebilir.
Bu işlem, serverın işlemci yükünün artmasına sebeb olsada, yükleme hızını çok arttırmasınından dolayı server yükü kabul edilebir bir maliyet olarak görülür.
klasik bir html tagı olan img ye bir bakalım. Bu tagın src özelliği görüntülecek dosyanın yolunu belitir.
<img src="/Content/Image/test.png">
test.png dosyasının 170 kb uzunluğunda olduğunu varsayalım.
ilk önce route işlemimizi yapalım
routes.MapRoute("ImageResize",
"GenelUtil/ImageResize/{width}x{height}/{imageName}",
new { controller = "FrontPage", action = "ImageResize", keyWord = UrlParameter.Optional },
new[] { "Genorobotic.Plugin.NewsPaper.Controllers" }
);
sonra GenelUtil isimli controler da aağıdaki actionı yaratalım
public ActionResult ImageResize(int width,int height,string imageName)
{
Image srcImage = null;
string fileNotFoundPath = null;
string imageFile = null;
try
{
imageFile = Server.MapPath(""~/Content/Image/"+imageName);
fileNotFoundPath = Server.MapPath("~/Content/Image/fileNotFound.jpg");
srcImage = Image.FromFile(imageFile);
}
catch (FileNotFoundException ex)
{
srcImage = Image.FromFile(fileNotFoundPath);
}
catch (Exception ex)
{
return null;
}
using (var newImage = new Bitmap(width, height))
using (var graphics = Graphics.FromImage(newImage))
using (var stream = new MemoryStream())
{
graphics.SmoothingMode = SmoothingMode.AntiAlias;
graphics.InterpolationMode = InterpolationMode.HighQualityBicubic;
graphics.PixelOffsetMode = PixelOffsetMode.HighQuality;
graphics.DrawImage(srcImage, new Rectangle(0, 0, width, height));
newImage.Save(stream, System.Drawing.Imaging.ImageFormat.Jpeg);
return File(stream.ToArray(), "image/jpeg");
}
}
Server tarafında işimiz bitti. artık client tarafında
<img src="/GenelUtil/ImageResize/300x200/test.png">
yazdığımızda test.png dosyasını yeni ölçeklendirip 300x200 oyutlarında, jpeg formatında bir dosya haline getirecetir.
170 KB dosya 10 KB civarına inecek buda yüklenme süresini çok kısaltacaktır.
Aşağıda linki verilen site bu action ı kullanmaktadır
epubevi.com
Sağlıcakla Kalın
Serdar GÜNER
8 Kasım 2016 Salı
Servera Gonderme POST
Merhaba,
Diğer makalerlerde oluşturduğumuz ve okuduğumuz xml dosyasını servera göndermeye çalışalım.
using (WebClient client = new WebClient())
{
client.Headers[HttpRequestHeader.ContentType] = "text/xml";
client.Headers[HttpRequestHeader.AcceptEncoding] = "Encoding.UTF8";
client.Encoding = Encoding.UTF8;
NameValueCollection parameters = new NameValueCollection();
parameters.Add("storeId", StoreList[storeCombo.SelectedIndex].id.ToString());
client.QueryString = parameters;
var responsebytes = client.UploadString("http://benimserver.com, "POST", SplitXml(StoreList[index].id,filePath, i, 50));
System.Threading.Thread.Sleep(500);
itemCount = i;
}
Client adını verdiğimiz yeni bir WebClient sınıfı yaratıyoruz.
Göndermeyi post medotu ile yapacağımızdan gönderinin header kısmının Controltype ve Encoding bilgilerini veriyoruz.
Parametereleri göndermek için bir kaç yol varsada, benim için en kullanışlısı ValueCollection sınıfı geliyor . Bu sınıfın üzerinde çalışırken dictionary işlemlerini yapabilmek, parametreleri hazırlamayı kolaylaştırıyor. bu sınıfa eklediğimiz parametleri QueryString atıyoruz. Xml i string haline getirdiğimizden, uploadstring sınıfını kullanarak gönderiyoruz . Gönrerirken yarattığımız Split fonksiyonunu kullanarak parçalıyoruz. Bu yolla büyük xml dosylarını küçük parçalar halinde servera gönderme olanağımız doğuyor.
Göz atmakata yarar var
Sağlıcakla Kalın
Serdar GÜNER
Diğer makalerlerde oluşturduğumuz ve okuduğumuz xml dosyasını servera göndermeye çalışalım.
using (WebClient client = new WebClient())
{
client.Headers[HttpRequestHeader.ContentType] = "text/xml";
client.Headers[HttpRequestHeader.AcceptEncoding] = "Encoding.UTF8";
client.Encoding = Encoding.UTF8;
NameValueCollection parameters = new NameValueCollection();
parameters.Add("storeId", StoreList[storeCombo.SelectedIndex].id.ToString());
client.QueryString = parameters;
var responsebytes = client.UploadString("http://benimserver.com, "POST", SplitXml(StoreList[index].id,filePath, i, 50));
System.Threading.Thread.Sleep(500);
itemCount = i;
}
Client adını verdiğimiz yeni bir WebClient sınıfı yaratıyoruz.
Göndermeyi post medotu ile yapacağımızdan gönderinin header kısmının Controltype ve Encoding bilgilerini veriyoruz.
Parametereleri göndermek için bir kaç yol varsada, benim için en kullanışlısı ValueCollection sınıfı geliyor . Bu sınıfın üzerinde çalışırken dictionary işlemlerini yapabilmek, parametreleri hazırlamayı kolaylaştırıyor. bu sınıfa eklediğimiz parametleri QueryString atıyoruz. Xml i string haline getirdiğimizden, uploadstring sınıfını kullanarak gönderiyoruz . Gönrerirken yarattığımız Split fonksiyonunu kullanarak parçalıyoruz. Bu yolla büyük xml dosylarını küçük parçalar halinde servera gönderme olanağımız doğuyor.
Göz atmakata yarar var
Sağlıcakla Kalın
Serdar GÜNER
1 Kasım 2016 Salı
Linq Kullanarak Xml Okuma
Bir önceki çalışmada xml yaratmayı gördük. Şimdi yarattığımız xml dosyasını kullanalım ve üzerinde biraz oynayalım.
Okumak için bir çok yol var en sevdiğim ve bana kolay gelen. xml linq .alışık olduğumuz linq yapısını xml uygulamak hem işleri kolaylaştırıyor hemde kod anlamlılığını arttırıyor.
Xml dosyamız aşağıdaki fortmatta gösterildiği gibi olsun
<?xml version="1.0" encoding="UTF-8"?>
<Haberler>
<Haber>
<Type>H</Type>
<Tarih>2013-09-02T10:50:00.0000000+03:00</Tarih>
<Web>RadikalKitap</Web>
<ImagePath>http://kitap.ilgilisin.com/Content/Images/notfound/kitap-notfound.jpg</ImagePath>
<Title>Jamie Oliver’dan “siyasi” bağış</Title>
<ShortDesc> Ünlü İngiliz aşçı, yoksul aileler hakkında yaptığı açıklamaların tartışma yaratmasının hemen ardından son kitabını ülkedeki 4 binden fazla kütüphaneye bağışlama kararı aldı.</ShortDesc>
<LongDesc><![CDATA[ <p> Jaime Oliver’ın yayıncısı Penguin Random House, ünlü şefin “Save with Jamie” adlı son kitabından birer kopyayı ]]></LongDesc>
<ImagePathDesc>http://kitap.ilgilisin.com/Content/Images/notfound/kitap-notfound.jpg</ImagePathDesc>
<StoreId>8</StoreId>
<IsSlider>False</IsSlider>
<IsTopSlider>False</IsTopSlider>
<IsBottomSlider>False</IsBottomSlider>
<Tags>ülke,İngiltere</Tags>
<NumberOfViews>1767</NumberOfViews>
<NumberOfLike>34</NumberOfLike>
<NumberOfDisLike>1414</NumberOfDisLike>
</Haber>
<Haber>
.
.
</Haber>
<Haber>
.
.
</Haber>
<Haber>
.
.
</Haber>
</Haberler>
System.Xml.Linq namespace adı ile bu sınıfı kullanabiliriz.
public XmlOku(string path)
{
var list=XDocument.Load(path).Root.Elements().ToList();
}
artık elimizde üzerinde çalışabileceğimiz bir List sınıfı var. Eskiden foreach döngüleriyle üzerinde çalışırdık Şimdi Linq'nun listeler üzerindeki gücünü kullanıyoruz.
Ön alıştırma olarak bir fonksiyonla bu listtin eleman sayısını alalım
public int GetXmlElemanCount(string path)
{
return XDocument.Load(path).Root.Elements().ToList().Count();
}
Bu basit fonksiyon parametre olarak gelen dosya yolunu okuyuo bu dosyadaki eleman sayısı ile bize dönecek;
Şimdi listemizdeki storeId lere sabit bir değer atayalım
XDocument.Load(path).Root.Elements().ToList().ForEach(x=>x.StoreId=storeId);
tek satırda hem xml dosyamızı okuttuk hemde foreach medotu ile bu listenin bütün elemanlarının içindeki bir değeri değiştirdik.
Büyük listeler servera gönderirken sorun çıkarabilir genelde serverlardaki yüklenen dosya büyüklüğü 4 Mb ile sınırlıdır. Bunu göz önüne alarak listemizi küçük parçalara ayıralım ve sonucu Xml string olarak alalım. Bu arada storeId yide yeniden atayalım
public string SplitXml(int storeId,string path, int start = 0, int length = Int32.MaxValue)
{
StringBuilder sb = new StringBuilder(@"<?xml version='1.0' encoding='UTF - 8'?><Haberler>");
XDocument.Load(path).Root.Elements()
.Skip(start).Take(length).ToList().ForEach(x => sb.Append(SetStoreId(x,storeId).ToString()));
sb.Append("</Haberler>");
return sb.ToString();
}
}
public XElement SetStoreId( XElement x,int storeId)
{
x.SetElementValue("StoreId", storeId);
return x;
}
StringBuilder sb = new StringBuilder(@"<?xml version='1.0' encoding='UTF - 8'?><Haberler>");
XDocument.Load(path).Root.Elements()
Dosyayı okuttuk ve root elemanından itibaren aldık.
.Skip(start).Take(length).ToList().
Skip medoduyla start değeri kadar atladık ve oradan listeden length degeri kadar satırı Take medodunu kullanarak ayrı bir liste haline getirdik.
Bu listenin her satırına ForEach medoduyla ulaştık burada SetSoreId fonksiyonunu ForEach içinde her satıra uyguladık. Fonksiyondan dönen elemanı stringbuilder tipinde olan sb.Append medoduyla sb değişkenine ekledik.
SplitXml(5,"yol.xml" 300,700);
parametleriyle fonsiyonunu çağırdığımızda yol .xml dosyadını okuyacak 300 satırdan itibaren 700 satırı bir liste haline getirecek ve bu listenin her bir elemanına SetStoreId fonksinyunu uygulayarak storeId değerine 5 tam sayısını atayacak.
SplitXml fonksiyonunda bir satırda bir çok sorunumuzu çözdük. dosyamızı okuduk,skip ve store metodlarıyla yeni bir list oluşturduk Bu liste uyguladığımız. foreach metodunda SetStoreId functionını kullanarak store idleri değiştirdik ve string builder sınıfımızı kullanarak xml string yarattık.
Bu günlük bu kadar. Sonraki günlerde yarattığımız bu xml stringi webclient sınıfını kullanarak servera göndereceğiz.
Kendinize iyi bakın
Serdar GÜNER
http://epubevi.com
Okumak için bir çok yol var en sevdiğim ve bana kolay gelen. xml linq .alışık olduğumuz linq yapısını xml uygulamak hem işleri kolaylaştırıyor hemde kod anlamlılığını arttırıyor.
Xml dosyamız aşağıdaki fortmatta gösterildiği gibi olsun
<?xml version="1.0" encoding="UTF-8"?>
<Haberler>
<Haber>
<Type>H</Type>
<Tarih>2013-09-02T10:50:00.0000000+03:00</Tarih>
<Web>RadikalKitap</Web>
<ImagePath>http://kitap.ilgilisin.com/Content/Images/notfound/kitap-notfound.jpg</ImagePath>
<Title>Jamie Oliver’dan “siyasi” bağış</Title>
<ShortDesc> Ünlü İngiliz aşçı, yoksul aileler hakkında yaptığı açıklamaların tartışma yaratmasının hemen ardından son kitabını ülkedeki 4 binden fazla kütüphaneye bağışlama kararı aldı.</ShortDesc>
<LongDesc><![CDATA[ <p> Jaime Oliver’ın yayıncısı Penguin Random House, ünlü şefin “Save with Jamie” adlı son kitabından birer kopyayı ]]></LongDesc>
<ImagePathDesc>http://kitap.ilgilisin.com/Content/Images/notfound/kitap-notfound.jpg</ImagePathDesc>
<StoreId>8</StoreId>
<IsSlider>False</IsSlider>
<IsTopSlider>False</IsTopSlider>
<IsBottomSlider>False</IsBottomSlider>
<Tags>ülke,İngiltere</Tags>
<NumberOfViews>1767</NumberOfViews>
<NumberOfLike>34</NumberOfLike>
<NumberOfDisLike>1414</NumberOfDisLike>
</Haber>
<Haber>
.
.
</Haber>
<Haber>
.
.
</Haber>
<Haber>
.
.
</Haber>
</Haberler>
System.Xml.Linq namespace adı ile bu sınıfı kullanabiliriz.
public XmlOku(string path)
{
var list=XDocument.Load(path).Root.Elements().ToList();
}
artık elimizde üzerinde çalışabileceğimiz bir List sınıfı var. Eskiden foreach döngüleriyle üzerinde çalışırdık Şimdi Linq'nun listeler üzerindeki gücünü kullanıyoruz.
Ön alıştırma olarak bir fonksiyonla bu listtin eleman sayısını alalım
public int GetXmlElemanCount(string path)
{
return XDocument.Load(path).Root.Elements().ToList().Count();
}
Bu basit fonksiyon parametre olarak gelen dosya yolunu okuyuo bu dosyadaki eleman sayısı ile bize dönecek;
Şimdi listemizdeki storeId lere sabit bir değer atayalım
XDocument.Load(path).Root.Elements().ToList().ForEach(x=>x.StoreId=storeId);
tek satırda hem xml dosyamızı okuttuk hemde foreach medotu ile bu listenin bütün elemanlarının içindeki bir değeri değiştirdik.
Büyük listeler servera gönderirken sorun çıkarabilir genelde serverlardaki yüklenen dosya büyüklüğü 4 Mb ile sınırlıdır. Bunu göz önüne alarak listemizi küçük parçalara ayıralım ve sonucu Xml string olarak alalım. Bu arada storeId yide yeniden atayalım
public string SplitXml(int storeId,string path, int start = 0, int length = Int32.MaxValue)
{
StringBuilder sb = new StringBuilder(@"<?xml version='1.0' encoding='UTF - 8'?><Haberler>");
XDocument.Load(path).Root.Elements()
.Skip(start).Take(length).ToList().ForEach(x => sb.Append(SetStoreId(x,storeId).ToString()));
sb.Append("</Haberler>");
return sb.ToString();
}
}
public XElement SetStoreId( XElement x,int storeId)
{
x.SetElementValue("StoreId", storeId);
return x;
}
StringBuilder sb = new StringBuilder(@"<?xml version='1.0' encoding='UTF - 8'?><Haberler>");
XDocument.Load(path).Root.Elements()
Dosyayı okuttuk ve root elemanından itibaren aldık.
.Skip(start).Take(length).ToList().
Skip medoduyla start değeri kadar atladık ve oradan listeden length degeri kadar satırı Take medodunu kullanarak ayrı bir liste haline getirdik.
Bu listenin her satırına ForEach medoduyla ulaştık burada SetSoreId fonksiyonunu ForEach içinde her satıra uyguladık. Fonksiyondan dönen elemanı stringbuilder tipinde olan sb.Append medoduyla sb değişkenine ekledik.
SplitXml(5,"yol.xml" 300,700);
parametleriyle fonsiyonunu çağırdığımızda yol .xml dosyadını okuyacak 300 satırdan itibaren 700 satırı bir liste haline getirecek ve bu listenin her bir elemanına SetStoreId fonksinyunu uygulayarak storeId değerine 5 tam sayısını atayacak.
SplitXml fonksiyonunda bir satırda bir çok sorunumuzu çözdük. dosyamızı okuduk,skip ve store metodlarıyla yeni bir list oluşturduk Bu liste uyguladığımız. foreach metodunda SetStoreId functionını kullanarak store idleri değiştirdik ve string builder sınıfımızı kullanarak xml string yarattık.
Bu günlük bu kadar. Sonraki günlerde yarattığımız bu xml stringi webclient sınıfını kullanarak servera göndereceğiz.
Kendinize iyi bakın
Serdar GÜNER
http://epubevi.com
30 Ekim 2016 Pazar
XmlWriter sınıfı
Hadi bizde Xml yapalım
XmlWriter sınıfı bana göre kullanımı en rahat, izlenebilir ve büyük verilerle oynayabileceginiz bir araç.
Genelde yazılımlarımda bu sınıfı kullanırım. Şimdiye kadar bir sorununu görmedim.
using (XmlWriter writer = XmlWriter.Create("haber.xml"))
{
}
Crreate metodu verilen xml dosyası yazılacak yolu isityor. Web sitelerinde kullanırken yazma izniniz olması lazım.
writer.WriteStartDocument(); xml dokumanının başladığını,
writer.WriteStartElement("Haber"); ile haber elemanının bu dokümana eklendiğini belirtiyoruz
şeklinde oluyor
<Haber>
</Haber>
WriteElementString ile string şeklinde elementlerimnizi yazıyoruz. Parametreleri element adı ve değeri
şimdi bir class yaratalım
public class Haber
{
public string Type { get; set; }
public DateTime Tarih { get; set; }
public string Web { get; set; }
public string ImagePath { get; set; }
public string Title { get; set; }
public string ShortDesc { get; set; }
public string LongDesc { get; set; }
public string ImagePathDesc { get; set; }
public int StoreId{ get; set; }
public bool IsSlider { get; set; }
public bool IsTopSlider { get; set; }
public bool IsBottomSlider { get; set; }
public string Tags{ get; set; }
public int NumberOfViews { get; set; }
public int NumberOfLike { get; set; }
public int NumberOfDisLike { get; set; }
}
IList<Haber> Haberler = new List<Haber>();
ve haberler listimizi xml formatında haberler.xml dosyasına yazdıralım
using (XmlWriter writer = XmlWriter.Create("haberler.xml"))
{
writer.WriteStartDocument();
writer.WriteStartElement("Haberler");//<Haberler> root elemanı actık
foreach (var haber in haberler)
{
writer.WriteStartElement("Haber"); //<Haber> elemanını açtık
writer.WriteElementString("Type", haber.Type); // <-- <Type ="H"/> satırını oluşturduk
writer.WriteElementString("Tarih ", haber.Tarih.ToString() ); //DateTime değişken tipini stringe çevirdik
writer.WriteElementString("Web ", haber.Web );
writer.WriteElementString("ImagePath", haber.ImagePath);
writer.WriteElementString("Title ", haber.Title );
writer.WriteElementString("ShortDesc", haber.ShortDesc );
writer.WriteElementString("LongDesc", haber.LongDesc );
writer.WriteElementString("ImagePathDesc", haber.ImagePathDesc );
writer.WriteElementString("StoreId", haber.StoreId); //Int tipini stringe çevirdik
writer.WriteElementString("IsSlider ", haber.IsSlider.ToString() ); //bool tipini stringe çevirdik
writer.WriteElementString("IsTopSlider ", haber.IsTopSlider.ToString() );
writer.WriteElementString("IsBottomSlider ", haber.IsBottomSlider.ToString() );
writer.WriteElementString("Tags", haber.Tags);
writer.WriteElementString("NumberOfViews ", haber.NumberOfViews.ToString() ); //Int tipini stringe çevirdik
writer.WriteElementString("NumberOfLike ", haber.NumberOfLike.ToString() );
writer.WriteElementString("NumberOfDisLike ", haber.NumberOfDisLike.ToString() );
writer.WriteEndElement(); //</Haber> elemanı kapattık
}
writer.WriteEndElement();//</haberler> Root elemanını kapattık
writer.WriteEndDocument();//xml dosyamız sonlandı. Artık kullanıma hazır
}
}
http://epubevi.com
Sağlıcakla Kalın
Serdar GÜNER
XmlWriter sınıfı bana göre kullanımı en rahat, izlenebilir ve büyük verilerle oynayabileceginiz bir araç.
Genelde yazılımlarımda bu sınıfı kullanırım. Şimdiye kadar bir sorununu görmedim.
using (XmlWriter writer = XmlWriter.Create("haber.xml"))
{
}
Crreate metodu verilen xml dosyası yazılacak yolu isityor. Web sitelerinde kullanırken yazma izniniz olması lazım.
writer.WriteStartDocument(); xml dokumanının başladığını,
writer.WriteStartElement("Haber"); ile haber elemanının bu dokümana eklendiğini belirtiyoruz
şeklinde oluyor
<Haber>
</Haber>
WriteElementString ile string şeklinde elementlerimnizi yazıyoruz. Parametreleri element adı ve değeri
şimdi bir class yaratalım
public class Haber
{
public string Type { get; set; }
public DateTime Tarih { get; set; }
public string Web { get; set; }
public string ImagePath { get; set; }
public string Title { get; set; }
public string ShortDesc { get; set; }
public string LongDesc { get; set; }
public string ImagePathDesc { get; set; }
public int StoreId{ get; set; }
public bool IsSlider { get; set; }
public bool IsTopSlider { get; set; }
public bool IsBottomSlider { get; set; }
public string Tags{ get; set; }
public int NumberOfViews { get; set; }
public int NumberOfLike { get; set; }
public int NumberOfDisLike { get; set; }
}
IList<Haber> Haberler = new List<Haber>();
ve haberler listimizi xml formatında haberler.xml dosyasına yazdıralım
using (XmlWriter writer = XmlWriter.Create("haberler.xml"))
{
writer.WriteStartDocument();
writer.WriteStartElement("Haberler");//<Haberler> root elemanı actık
foreach (var haber in haberler)
{
writer.WriteStartElement("Haber"); //<Haber> elemanını açtık
writer.WriteElementString("Type", haber.Type); // <-- <Type ="H"/> satırını oluşturduk
writer.WriteElementString("Tarih ", haber.Tarih.ToString() ); //DateTime değişken tipini stringe çevirdik
writer.WriteElementString("Web ", haber.Web );
writer.WriteElementString("ImagePath", haber.ImagePath);
writer.WriteElementString("Title ", haber.Title );
writer.WriteElementString("ShortDesc", haber.ShortDesc );
writer.WriteElementString("LongDesc", haber.LongDesc );
writer.WriteElementString("ImagePathDesc", haber.ImagePathDesc );
writer.WriteElementString("StoreId", haber.StoreId); //Int tipini stringe çevirdik
writer.WriteElementString("IsSlider ", haber.IsSlider.ToString() ); //bool tipini stringe çevirdik
writer.WriteElementString("IsTopSlider ", haber.IsTopSlider.ToString() );
writer.WriteElementString("IsBottomSlider ", haber.IsBottomSlider.ToString() );
writer.WriteElementString("Tags", haber.Tags);
writer.WriteElementString("NumberOfViews ", haber.NumberOfViews.ToString() ); //Int tipini stringe çevirdik
writer.WriteElementString("NumberOfLike ", haber.NumberOfLike.ToString() );
writer.WriteElementString("NumberOfDisLike ", haber.NumberOfDisLike.ToString() );
writer.WriteEndElement(); //</Haber> elemanı kapattık
}
writer.WriteEndElement();//</haberler> Root elemanını kapattık
writer.WriteEndDocument();//xml dosyamız sonlandı. Artık kullanıma hazır
}
}
http://epubevi.com
Sağlıcakla Kalın
Serdar GÜNER
Kaydol:
Kayıtlar (Atom)