Coder

10 Şubat 2014

Xml kaydet güncelle silme işlemleri

Xml dosya yapısı, veri saklamak için uygun olduğu için ufak çapta projeler için xml teknolojisi vazgeçilmez oluyor. Gelin birlikte windows form ile xml dosyasına takla attıralım…

Windows form ile yapacağımız örnek uygulamada Xml dosyasına veri kayıt etme, güncelleme, silme gibi işlemlerin yanında kontrolleri kullanarak işlemleri yaptıralım. Örneğimizde; xml dosyası oluşturup dosya içine kayıt id numarası otomatik artacak şekilde veri kayıt etme, kayıt ettiğimiz verileri listview kontrolünde gösterme, kayıt edilip listelenen verileri güncelleme ve kayıt edilmiş seçilen veriyi silme işlemi yapılacak. Bunun yanında xml dosyasından combobox kontrolüne veri çekip, bu kontrolde seçilen elemana ilişkili olan verileri listview kontrolünde gösterecek.

[viral-lock][wpdm_file id=23][/viral-lock]

xml-kaydet-guncelle-sil

Resimdeki gibi bir form ekranı tasarlayıp aşağıda açıklamanı kod kısmına geçebilirsiniz;

[cc lang='csharp' ]
private void Form1_Load(object sender, EventArgs e)
{
if (!File.Exists(“xmldosyam.xml”)) // Daha önceden dosyanın var olduğunu kontrol ettik. Dosya yoksa .xml uzantılı xmldosyam adında dosya oluşturma işlemine başladık.
{
XmlTextWriter xmlolustur = new XmlTextWriter(“xmldosyam.xml”, null); // XmlTextWriter sınıfından oluşturacağımız dosya özellikleri için nesne oluşturduk.

xmlolustur.WriteStartDocument();

xmlolustur.WriteComment(“Oluşturulan xml hakkında bilgi”); // Dosya hakkında bilgi ekledik.

xmlolustur.WriteStartElement(“Baslangic”); // Başlangıç elementi gibi özellikleri ekledik.

xmlolustur.WriteEndDocument();

xmlolustur.Close();
}

//xml dosyasında veri varsa başlangıçta çekiyoruz
listele();
}

private void listele()
{
if (File.Exists(“xmldosyam.xml”))
{
listView1.Items.Clear();

XmlDocument doc = new XmlDocument();

doc.Load(“xmldosyam.xml”);
XmlElement root = doc.DocumentElement;
XmlNodeList kayitlar = root.SelectNodes(“/Baslangic/Kisiler”);

foreach (XmlNode secilen in kayitlar)
{
ListViewItem lv = new ListViewItem();
lv.Text = secilen["id"].InnerText;
lv.SubItems.Add(secilen["adi"].InnerText);
lv.SubItems.Add(secilen["soyadi"].InnerText);
lv.SubItems.Add(secilen["sehir"].InnerText);
listView1.Items.Add(lv);

// combobox içine xml dosya içindeki şehileri ekliyoruz.
// Fakat burada aynı şehirden birden fazla olmaması için indexof özelliğinden yararlanarak combobox içine benzersiz eleman eklemiş oluyoruz.
if (comboBox1.Items.IndexOf(secilen["sehir"].InnerText) == -1)
{
comboBox1.Items.Add(secilen["sehir"].InnerText);
}

}
}
}

private void btnKaydet_Click(object sender, EventArgs e)
{
bool varmi = false;
int enBuyukId;

XmlDocument doc = new XmlDocument(); // Xml dosyamızı okumak için XmlDocument sınıfından yararlanıyoruz.
doc.Load(“xmldosyam.xml”);
XmlElement root = doc.DocumentElement;
XmlNodeList kayitlar = root.SelectNodes(“/Baslangic/Kisiler”); // Xml içindeki istediğimiz kayıtlara ulaşabilmek için yolu tanımlıyoruz. Bunu veritabanı içindeki
// tablo olarak düşünebilirsiniz. Bu yol ile Kullanicilar tablosuna yani listesine ulaşıp kayıtları XmlNodeList sınıfından oluşturduğumuz kayitlar isimli

if (kayitlar.Count > 0) // Her yeni kayıta otomatik farklı id numarası verebilmek için bir önceki kayıtın id numarasına göre işlem yapmamız gerekecek. Burada ilk kayıt varmı kontrol ediyoruz. Varsa, kayıtlar içinde en büyük idyi yani numarayı bulup üzerine 1 ekletip yeni kayıt için hazırlıyoruz. Yoksa, daha önce kayıt oluşturulmamışsa ilk kayıt numarasını 0 atayıp kayıt için gönderiyoruz.
{
varmi = true;
}

if (varmi == true)
{
int[] kayittakiSayilar = new int[kayitlar.Count]; // Kayıt sayısı kadar dizi tanımaldık.

int i = 0; // Diziyi arttırmak için sayı tanımladık.
foreach (XmlNode secilen in kayitlar)
{
kayittakiSayilar[i] = Convert.ToInt32(secilen["id"].InnerText); // Kayıtlardaki tüm id yani numaraları kayittakiSayilar dizisi içine ekledik.
i = i + 1;
}

Array.Sort(kayittakiSayilar); // kayittakiSayilar dizisi içinde bulunan sayılardan en büyüğünü bulabilmek için Array sınıfını kullandık. Bulunan en büyük sayıya 1 ekledik.
enBuyukId = kayittakiSayilar[kayittakiSayilar.Length - 1];
enBuyukId = enBuyukId + 1;

}
else
{
enBuyukId = 0;
}

if (File.Exists(“xmldosyam.xml”)) // Xml dosyamıza kayıt eklemede hata almamak için dosyanın var olup olmadığını kontrol ediyoruz.
{

XmlElement UserElement = doc.CreateElement(“Kisiler”); // Veritabanından tablo ismi gibi düşünbebilirsiniz.

XmlElement id = doc.CreateElement(“id”); //Oluşturulan xml içindeki Kullanicilar elementine id isimli element (DB deki gibi düşünürsek Kullanicilar tablosuna id kolonunu ekliyoruz.)
id.InnerText = enBuyukId.ToString();
UserElement.AppendChild(id);

XmlElement adi = doc.CreateElement(“adi”); // İkinci elementi ekliyoruz.(Yani ikinci kolonu)
adi.InnerText = txtAdi.Text;
UserElement.AppendChild(adi);

XmlElement soyadi = doc.CreateElement(“soyadi”);
soyadi.InnerText = txtSoyAdi.Text;
UserElement.AppendChild(soyadi);

XmlElement sehir = doc.CreateElement(“sehir”);
sehir.InnerText = txtSehir.Text;
UserElement.AppendChild(sehir);

doc.DocumentElement.AppendChild(UserElement);

XmlTextWriter xmleekle = new XmlTextWriter(“xmldosyam.xml”, null);
xmleekle.Formatting = Formatting.Indented;
doc.WriteContentTo(xmleekle);
xmleekle.Close();

}
listele();

}
string id = null;
private void listView1_SelectedIndexChanged(object sender, EventArgs e)
{
if (listView1.SelectedItems.Count > 0)
{
ListViewItem li = listView1.SelectedItems[0];
lblId.Text = li.SubItems[0].Text;
txtAdi.Text = li.SubItems[1].Text;
txtSoyAdi.Text = li.SubItems[2].Text;
txtSehir.Text = li.SubItems[3].Text;
id = li.SubItems[0].Text;

}
}

private void btnSil_Click(object sender, EventArgs e)
{
try
{

XDocument xDoc = XDocument.Load(“xmldosyam.xml”);
XElement deletedElement = xDoc.Root.Elements().FirstOrDefault(xe => xe.Element(“id”).Value == id);

deletedElement.Remove();
xDoc.Save(“xmldosyam.xml”);

//listeyi güncellemek için xmlden verileri listview1 çekiyoruz
listele();
}
catch (Exception)
{

MessageBox.Show(“Silinecek eleman yok veya seçilmemiş.”);
}
}

private void btnGuncelle_Click(object sender, EventArgs e)
{
XDocument xDoc = XDocument.Load(“xmldosyam.xml”);

// gelen id ye göre güncelleme yapılmakta
XElement currentElement = xDoc.Root.Elements().FirstOrDefault(xe => xe.Element(“id”).Value == id);

// Guncellenecek verinin koşulu fazla ise, yani hem adı hemde sehiri koşulu sağlayan verilerin güncellemek istediğimizde aşağıdaki gibi kullanırız.
// XElement currentElement = xDoc.Root.Elements().FirstOrDefault(xe => xe.Element(“adi”).Value ==”ali” && xe.Element(“sehir”).Value == “istanbul”);

currentElement.SetElementValue(“adi”, txtAdi.Text);
currentElement.SetElementValue(“soyadi”, txtSoyAdi.Text);
currentElement.SetElementValue(“sehir”, txtSehir.Text);
xDoc.Save(“xmldosyam.xml”);

//listeyi güncellemek için xmlden verileri listview1 çekiyoruz
listele();
}

private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
{

// combobox dan seçilen şehir e göre listeleme işlemi yapıyoruz.
listView1.Items.Clear();

XmlDocument doc = new XmlDocument();

doc.Load(“xmldosyam.xml”);
XmlElement root = doc.DocumentElement;
XmlNodeList kayitlar = root.SelectNodes(“/Baslangic/Kisiler”);

foreach (XmlNode secilen in kayitlar)
{
//seçilen şehri gösterebilmek için burada filtreliyoruz
if (secilen["sehir"].InnerText == comboBox1.Text)
{

ListViewItem lv = new ListViewItem();
lv.Text = secilen["id"].InnerText;
lv.SubItems.Add(secilen["adi"].InnerText);
lv.SubItems.Add(secilen["soyadi"].InnerText);
lv.SubItems.Add(secilen["sehir"].InnerText);
listView1.Items.Add(lv);

}

}
}

[/cc]

29 Ocak 2013

Xml dosyasını veritabanı olarak kullanma

Xml ile az çok uğraşanlar bilir tanımını ne işe yaradığını. Onun için hakkında pek fazla konuşmayacağım. Yalnız tanımına ayrıkırı bir örnek paylaşacağım için bir şeyler söylemeden geçemeyeceğim.

Xml nedir diye sorunca hemen herkes wikipedia ’ya sarılır ve merakını giderir. Kullanımı hakkında yazılan yazıda; “Rastgele veri erişimine uygun olmadığından veri tabanı amaçlı kullanılmamaktadır.” ibaresi içermektedir. Bunun nedeni herhangi bir kısıtlama olmadan normal bir şekilde okunabilir olması.  Örneğin .mdb uzantılı database dosyasına sağ tıkladığımızda verileri okuyamıyoruz. Ancak xml basit bir not defterinde yardımıyla bile okunabilmekte.  Biz bu ibareyi es geçip xml dosyasını veritabanı olarak nasıl kullanırız basit bir örnekle öğrenelim.(Tanımda veritabanı olarak kullanamazsınız demiyor nede olsa)

xml-dosya-kayit

Xml dosyasını veritabanı veya sadece bir tablo olarak verimli bir şekilde kullanabilmek için database deki gibi tabloda her kayıtta artan id numarasına ihtiyacımız olacaktır. Bu ihtiyacı nasıl giderebiliriz, xml dosyasını nası veritabanı gibi kullanabiliriz, buyrun örnekte görelim..

veritabani-gibi-kullanma

Resimdeki gibi boş bir forma 2 button bir label ve bir adet textbox ekleyerek kod kısmına geçebiliriz. Öncelikle boş xml dosyası oluşturmak için btnXmlOlusutur isimli butonunun clik olayına gelerek alttaki kodları uygulayalım.

[cc lang='csharp' ] private void btnXmlOlusutur_Click(object sender, EventArgs e)
{
if (!File.Exists(“xmldosyam.xml”)) // Daha önceden dosyanın var olduğunu kontrol ettik. Dosya yoksa .xml uzantılı xmldosyam adında dosya oluşturma işlemine başladık.
{
XmlTextWriter xmlolustur = new XmlTextWriter(“xmldosyam.xml”, null); // XmlTextWriter sınıfından oluşturacağımız dosya özellikleri için nesne oluşturduk.

xmlolustur.WriteStartDocument();

xmlolustur.WriteComment(“Oluşturulan xml hakkında bilgi”); //// Dosya hakkında bilgi ekledik.

xmlolustur.WriteStartElement(“Baslangic”); // Başlangıç elementi gibi özellikleri ekledik.

xmlolustur.WriteEndDocument();
xmlolustur.Close();

label1.Text = “Dosya programın bulunduğu dizine oluşturuldu.”;
}
else
{
MessageBox.Show(“Oluşturulmadı”); // Daha önceden dosya varsa veya herhangi bir hatada buradaki mesajı verir.
}

}[/cc]

Gerekli kod açıklamaları kodlar içinde mevcut. (Anketten dolayı haddinden fazla detaya girdiğim için özür dilerim)

Dosya oluşturma işlemini yaptıktan sonra oluşturulan xml dosyamız içine standart bir veri tabanındaki tablo yapısı gibi otomatik artan id kolonlu kayıt gerçekleştirelim. Bunun için txtKayitAdi isimli metin kutumuza girilen karakteri xml dosyasına kayıt etme işlemine geçelim. Bunun için btnEkle isimli butonun clik olayına gelip alttaki kodları girelim.

[cc lang='csharp' line_numbers='true']
private void btnEkle_Click(object sender, EventArgs e)
{
bool varmi = false;
int enBuyukId;

XmlDocument doc = new XmlDocument(); // Xml dosyamızı okumak için XmlDocument sınıfından yararlanıyoruz.
doc.Load(“xmldosyam.xml”);
XmlElement root = doc.DocumentElement;
XmlNodeList kayitlar = root.SelectNodes(“/Baslangic/Kullanicilar”); // Xml içindeki istediğimiz kayıtlara ulaşabilmek için yolu tanımlıyoruz. Bunu veritabanı içindeki
// tablo olarak düşünebilirsiniz. Bu yol ile Kullanicilar tablosuna yani listesine ulaşıp kayıtları XmlNodeList sınıfından oluşturduğumuz kayitlar isimli

if (kayitlar.Count > 0) // Her yeni kayıta otomatik farklı id numarası verebilmek için bir önceki kayıtın id numarasına göre işlem yapmamız gerekecek. Burada ilk kayıt varmı kontrol ediyoruz. Varsa, kayıtlar içinde en büyük idyi yani numarayı bulup üzerine 1 ekletip yeni kayıt için hazırlıyoruz. Yoksa, daha önce kayıt oluşturulmamışsa ilk kayıt numarasını 0 atayıp kayıt için gönderiyoruz.
{
varmi = true;
}

if (varmi == true)
{
int[] kayittakiSayilar = new int[kayitlar.Count]; // Kayıt sayısı kadar dizi tanımaldık.

int i = 0; // Diziyi arttırmak için sayı tanımladık.
foreach (XmlNode secilen in kayitlar)
{
kayittakiSayilar[i] = Convert.ToInt32(secilen["id"].InnerText); // Kayıtlardaki tüm id yani numaraları kayittakiSayilar dizisi içine ekledik.
i = i + 1;
}

Array.Sort(kayittakiSayilar); // kayittakiSayilar dizisi içinde bulunan sayılardan en büyüğünü bulabilmek için Array sınıfını kullandık. Bulunan en büyük sayıya 1 ekledik.
enBuyukId = kayittakiSayilar[kayittakiSayilar.Length - 1];
enBuyukId = enBuyukId + 1;

}
else
{
enBuyukId = 0;
}

if (File.Exists(“xmldosyam.xml”)) // Xml dosyamıza kayıt eklemede hata almamak için dosyanın var olup olmadığını kontrol ediyoruz.
{

XmlElement UserElement = doc.CreateElement(“Kullanicilar”); // Veritabanından tablo ismi gibi düşünbebilirsiniz.

XmlElement id = doc.CreateElement(“id”); //Oluşturulan xml içindeki Kullanicilar elementine id isimli element (DB deki gibi düşünürsek Kullanicilar tablosuna id kolonunu ekliyoruz.)
id.InnerText = enBuyukId.ToString();
UserElement.AppendChild(id);

XmlElement adi = doc.CreateElement(“adi”); // İkinci elementi ekliyoruz.(Yani ikinci kolonu)
adi.InnerText = txtKayitAdi.Text;
UserElement.AppendChild(adi);

doc.DocumentElement.AppendChild(UserElement);

XmlTextWriter xmleekle = new XmlTextWriter(“xmldosyam.xml”, null);
xmleekle.Formatting = Formatting.Indented;
doc.WriteContentTo(xmleekle);
xmleekle.Close();

label1.Text = “Kayıt eklendi.”; // Kayıt işlemi başarılı bir şekilde bittikten sonra mesaj için label kullanabilirsiniz.
}
}
}
[/cc]

Gerekli kod açıklamalarını kodlar içinde bulabilirsiniz. Oluşturulan, xmldosyam.xml dosyasını programın exe sinin olduğu yerde bula bilirsiniz. Veya oluştururken, kayıt ekerken istediğiniz dosyaya koyup işlem yapabilirsiniz.   Bu gibi uygulamayı; telefon rehberi, gizlilik gerektirmeyen kayıt giriş çıkış gibi programlar için örnek alabilirsiniz.

Vb.net kodlarına ve yorum satırı olmayan kodlara ulaşmak için alttaki numaraları kullanarak diğer sayfaya geçebilirsiniz.

29 Kasım 2012

En büyük sayıyı bulma

Başlık size biraz programlama dünyasına göre klişe bir örnek gelmiş olabilir. Genelde bu şekilde internet de aratma yaptığınızda gelen sonuçlar konsol ekranında girilen 3 sayıdan büyüğünü bulma gibi örnekler karşımıza çıkmıştır. Tabi arada farklı olanları saymazsak.

Böyle basit makaleyi nereden yazdım derseniz anlatayım; veri kayıt etmek için xml e ihtiyaç duydum.(bu aralar xml ile yatıp kalkıyorum) Girilen kayıtların haliyle benzersiz id numarası olması gerekirdi. Bunun içinde doğal olarak girilen her kayıta 1 er arttırmalı id numarası verdim. Bunun için kontroller yardımı ile daha önceden xml içine kaydedilmiş id leri alıp üzerine +1 ekleyerek gerçekleştirdim. Size sorayım, database deki gibi kaydedilmiş veriyi xml dosyamıza kaydettiğimiz veriyi silip başka veri eklediğimizde bu şekildeki senaryoda kaç tane id varsa o sayının 1 fazlası ekleneceği için daha önce kayıt edilmiş id numaraları kayıt eklenecekti.

Örneği yorumlarsak 10 adet kayıt eklendiğini var sayalım. 11. kayıt id si 10+1 yani 11 id no olarak kayıt edilecek. 7 numaralı id kayıtı sildiğimiz de 11. kayıt, xml dosyamızın içinde toplamda 9 kayıt olduğu için id si 9+1 yani 10 olarak kayıt edilecek. Xml dosyamıza dönüp baktığımızda iki tane 10 numaralı id kayıtı olacak. Ee nerde kaldı bunun benzersiz kayıtı ? İşte böyle bir senaryoda basit bir yöntem işimizi halledebilecek.

Xml dosyasına kaydedilen verilerin yalnızca id numaralarını alarak içlerinden en büyüğünü alıp +1 ekleyerek yeni kayıt oluşturabiliriz. Konuyu uzattığım özür dileyerek en büyük sayıyı bulma işine yarayan koda geçmek istiyorum.

Xml den alınan verileri combobox içine ekleyip içindeki verileri döndürerek Array.Sort ile en büyük sayıyı belirleyebiliriz. Xml dosya okuma kısmını konu karışmaması için atlamak istiyorum (Xml dosya okuma burada ki makale yardımı ile xml veriyi combobox içine yazdırabilirsiniz)

[cc lang="c#"] int[] sayilar = new int[comboBox1.Items.Count];

for (int i = 0; i < comboBox1.Items.Count; i++) { string eklenen = comboBox1.Items[i].ToString(); sayilar[i] = int.Parse(eklenen); } Array.Sort(sayilar); int enbuyuksayi = sayilar[sayilar.Length - 1]; MessageBox.Show(enbuyuksayi.ToString());[/cc]

10 Kasım 2012

Xml dosya okuma

Bir önceki yazıda Xml dosya oluşturma veri eklemeyi uygulamıştık. Bu yazıda oluşturduğumuz ve veri eklediğimiz xml dosyasındaki verileri nasıl okuruz görelim. Xml dosya okuma işlemini 3 ayrı; textbox, combobox ve listview kontrollerin de göstererek konunun öğrenilmesi için daha verimli hale getirdim.

Uygulama çalıştığında resimdeki gibi veriler kontrollerimizde gözükecek. Form üzerinde çalışma yaptığım uygulamada ilk olarak textbox lara veriyi nasıl çekebiliriz görelim. Aşağıdaki resimdeki gibi xml dosyamızın yapısı incelemenizde fayda olacak.

Daha önceden oluşturduğumuz xmldosyam.xml isimli dosyasmızın içindeki Kullanici3 daki veriyi textboxlarımızda gösterelim.

[cc lang="c#"] XmlDocument doc = new XmlDocument();

doc.Load(“c:\\klasorum\\xmldosyam.xml”);
XmlElement root = doc.DocumentElement;
XmlNodeList kayitlar = root.SelectNodes(“/Rapor/kullanicilar”);

foreach (XmlNode secilen in kayitlar)
{
string sirasi = secilen.Attributes[0].InnerXml;

if (sirasi == “kullanici3″)
{

textBox1.Text = secilen["adi"].InnerText;
textBox2.Text = secilen["soyadi"].InnerText;
}
}[/cc]

Xml den combobox a dosyadaki bütün veriyi çekip gösterme;

[cc lang="c#"] XmlDocument doc = new XmlDocument();

doc.Load(“c:\\klasorum\\xmldosyam.xml”);
XmlElement root = doc.DocumentElement;
XmlNodeList kayitlar = root.SelectNodes(“/Rapor/kullanicilar”);

foreach (XmlNode secilen in kayitlar)
{

comboBox1.Items.Add(secilen["adi"].InnerText);
} [/cc]

Xml dosyasındaki verileri listview de gösterme;

[cc lang="c#"]XmlDocument doc = new XmlDocument();

doc.Load(“c:\\klasorum\\xmldosyam.xml”);
XmlElement root = doc.DocumentElement;
XmlNodeList kayitlar = root.SelectNodes(“/Rapor/kullanicilar”);

foreach (XmlNode secilen in kayitlar)
{

ListViewItem lv = new ListViewItem();
lv.Text = secilen["adi"].InnerText;
lv.SubItems.Add(secilen["soyadi"].InnerText);

listView1.Items.Add(lv);
} [/cc]

09 Kasım 2012

Xml dosya oluşturma ve veri ekleme

Projelerimizde bazen küçük verileri bir yerde saklamak istemişizdir. Bu durumlarda yardıma koşan en basit text dosyası veriyi görüntüleme, sorgulama bakımından yetersiz olmaktadır. Bu gibi durumlarda yardımımıza xml gelmektedir. Xml genel olarak veri saklama ve farklı sistemler arasında geçişi sağlayan W3C tarafından tanımlanmış standarttır.

Basit bir örnek ile xml c3 projelerimizde nasıl kullanırız görelim. Bunun yanında bilgisayardaki herhangi bir dizine klasör nasıl oluşturulur bu örnek içinde de bulabilirsiniz. Resimdeki gibi form tasarlayarak örneği daha iyi anlayabilirsiniz.

Formu tasarladıktan sonra ilk önce c# da klasör nasıl oluşturulur Klasör oluştur buton clik olayına çift tıklayarak alttaki kodları harfiyen girelim.

[cc lang="c#"] private void btnklasor_Click(object sender, EventArgs e)
{

bool klasorvarmi = Directory.Exists(“c:\\klasorum”);
if (klasorvarmi == false)
{

Directory.CreateDirectory(“c:\\klasorum”);

MessageBox.Show(“Klasorum isimli dosya oluşturuldu !”);

}
}[/cc]

Burada yapılan işlem, bool değişken tip sayesinde klasörün var olup olmadığını sorguladık. Klasör yoksa Directory.CreateDirectory dizine klasör ekledik. Bunu yapmamın sebebi Windows 7 de direk C: dizinine xml gibi dosyaları oluşturma izin vermemesi. Xml dosyamızı bu klasörü oluşturmadan direk dizinde oluşturmaya kalktığımızda hata verecekti.

Gelelim oluşturduğumuz klasöre xml dosyamızı oluşturmaya. Bunun içinde xml oluştur buton clik olayına da alttaki kodları girelim.

[cc lang="c#"]private void btnolustur_Click(object sender, EventArgs e)
{
if (!File.Exists(“c:\\klasorum\\xmldosyam.xml”))
{
XmlTextWriter xmlolustur = new XmlTextWriter(“c:\\klasorum\\xmldosyam.xml”, null);

xmlolustur.WriteStartDocument();

xmlolustur.WriteComment(“oluşturulan xml hakkında bilgi”);

xmlolustur.WriteStartElement(“baslangic”);

xmlolustur.WriteEndDocument();
xmlolustur.Close();
}
else
{
MessageBox.Show(“Oluşturulmadı”);
}
}[/cc]

Buradan daha önceden oluştuduğumuz klasör içine xml uzantılı dosyamızı oluşturduk. Son olarak oluşturulan xml dosya içeriğine veri girmek. Bunun içinde 2 textbox ve buton yardımı ile parametreleri göndererek işlemi bitirebiliriz.

Yapı daha önce denemeyenler için biraz karışık gelmiş olabilir. Ekle butonuna alttaki kodları yazıp uyguladığınızda oluşturduğunuz xml dosyasını inceleyerek karmaşayı çözebilirsiniz.

Bu örnek ile xml nasıl oluşturulur, xml nasıl veri eklenir gibi sorularınızın cevabını vereceğini düşünüyorum.

[cc lang="c#"] private void btnekle_Click(object sender, EventArgs e)
{
if (File.Exists(“c:\\klasorum\\xmldosyam.xml”))
{
XmlDocument doc = new XmlDocument();
doc.Load(“c:\\klasorum\\xmldosyam.xml”);

XmlElement UserElement = doc.CreateElement(“kullanicilar”);

UserElement.SetAttribute(“baslik”, “kullanici”);

XmlElement kullanciadi = doc.CreateElement(“adi”);
kullanciadi.InnerText = textBox1.Text;
UserElement.AppendChild(kullanciadi);

XmlElement kullanicisoyadi = doc.CreateElement(“soyadi”);
kullanicisoyadi.InnerText = textBox2.Text;
UserElement.AppendChild(kullanicisoyadi);

doc.DocumentElement.AppendChild(UserElement);

XmlTextWriter xmleekle = new XmlTextWriter(“c:\\klasorum\\xmldosyam.xml”, null);
xmleekle.Formatting = Formatting.Indented;
doc.WriteContentTo(xmleekle);
xmleekle.Close();
}
}[/cc]

Powered by WordPress