C# XML CRUD
Extensible Markup Language (Genişletilebilir İşaretleme Dili). Tanımını yaparsak birçok yazılımın birbirleri arasında , data(veri) alış verişi sağlayan bir işaretleme dilidir.Fazla detaya girmeden hemen bir kaç avantajından bahsedip kod kısmına geçicem.
Avantajları
- Bağımsız bir dildir. Her platformlarda çalışabilir.
- Neredeyse tüm web servislerinde kullanılır.
- Tüm programlar XML desteği sunmaktadır.
- Öğrenilmesi kolay ve kullanışlı bir dildir.
.. Örnek bir XML Yapısını görelim.
Kök - Root
Her XML mutlaka olması gereken bir elementir.
XML dökümanın köküdür.
Ve sadece bir Kök bulunabilir.
Veritabanını temsil etmektedir.
Düğüm - Node
Kökler mutlaka Node elementi içermelidir.
Veritanımızın tabloları temsil etmektedir.
Çocuk - Child
Veritanımızındaki tablomuzun sütünlarını ifade etmektedir. Hepsi bir araya geldiğinde veri satırını oluşturmaktadır.
... Şimdi örnek bir XML CRUD işlemi yapan bir uygulama yapalım.
VS mizden Web-> Aspnet App -> Empty yeni bir proje oluştuyoruz. Ve oluşturduğumuz projemizde Add -> New item -> XML File dosyası ekliyoruz. Ve yukarıdaki resimde de gördüğünüz gibi bir XML yapısı oluştuyoruz
//Global Değişkenlerimiz Tanımlıyoruz
XmlDocument xmlDoc;
string file = "";
//XML Listele Metodumuz
public void XmlList(){
list_xml.Items.Clear();
//Dokumanımızın yolu
XPathDocument xp = new XPathDocument(file);
//Bir navigator oluştuyoruz
XPathNavigator xn = xp.CreateNavigator();
//Sorgumuzu yazıyoruz ve neye gelmesini istiyorsak
//Kokden başlayıp child a doğru yazıyoruz
string select = "Kullanicilar/Kullanici/Ad";
XPathExpression xe = xn.Compile(select);
XPathNodeIterator xni = xn.Select(xe);
while (xni.MoveNext())
{
//Ve Listimize kullanıcı adlarını ekliyoruz
list_xml.Items.Add(xni.Current.ToString());
}
Page Loadımız..
//İlk defa / İşlem yapılmışsa kontrolü
if (IsPostBack)
return;
//Dropdownlist / Cinsiyet Doldurulması
dropList_cinsiyet.Items.Add("Erkek");
dropList_cinsiyet.Items.Add("Kadın");
file = Server.MapPath("~/Kullanicilar.xml");
//Listele Metodunu Çağıralım.
XmlList();
SeletedIndexChanged Evetımızı yazıyoruz. Seçim yaptığımızda TextBox mızın dolmasını sağlayacağız.
xmlDoc = new XmlDocument();
file = Server.MapPath("~/Kullanicilar.xml");
//XML imizi yüklüyoruz
xmlDoc.Load(file);
//Nodemızı seçiyoruz
//Ve burada neye göre seçeğimizi belirtiyoruz listboxa adları getirmistik
//adlara göre getirmesini isteyelim tekrardan
XmlNode selected = xmlDoc.SelectSingleNode("Kullanicilar/Kullanici[Ad='" + list_xml.SelectedItem.Text + "']");
//Gelenleri Textboxımıza ekliyoruz
txt_ad.Text = selected["Ad"].InnerText;
txt_soyad.Text = selected["Soyad"].InnerText;
txt_eposta.Text = selected["Eposta"].InnerText;
//Dropdownlistimiz için küçük bir if
if (selected["Cinsiyet"].InnerText == "Erkek")
{
dropList_cinsiyet.SelectedIndex = 0;
}
else { dropList_cinsiyet.SelectedIndex = 1; }
Ekleme butonumuzun kodları.
xmlDoc = new XmlDocument();
file = Server.MapPath("~/Kullanicilar.xml");
//Ekleme işlemini
//XML imizi yüklüyoruz
xmlDoc.Load(file);
//Yeni bir element eklediğimiz için
//Yeni bir element oluştuyoruz
XmlElement xe = xmlDoc.CreateElement("Kullanici");
XmlNode ad = xmlDoc.CreateNode(XmlNodeType.Element, "Ad", null);
XmlNode soyad = xmlDoc.CreateNode(XmlNodeType.Element, "Soyad", null);
XmlNode cinsiyet = xmlDoc.CreateNode(XmlNodeType.Element, "Cinsiyet", null);
XmlNode eposta = xmlDoc.CreateNode(XmlNodeType.Element, "Eposta", null);
//Textboxdaki verilerimizi elementlere atıyoruz
ad.InnerText = txt_ad.Text;
soyad.InnerText = txt_soyad.Text;
cinsiyet.InnerText = dropList_cinsiyet.SelectedItem.Text;
eposta.InnerText = txt_eposta.Text;
//Child olarak elementimize ekliyoruz
xe.AppendChild(ad);
xe.AppendChild(soyad);
xe.AppendChild(cinsiyet);
xe.AppendChild(eposta);
//Oluşturduğumuz kullanıcı yı element /bir butun haliyle ekliyoruz
xmlDoc.DocumentElement.AppendChild(xe);
//Docmuzu kayıt ediyoruz
xmlDoc.Save(file);
//Hemen Listeleme İşlemi yapsın
XmlList();
//Formumuzu temızleyelım
FormClear();
Güncelleme butonumuzun kodları;
if (txt_ad.Text == "" && txt_soyad.Text == "" && txt_eposta.Text == "")
{
System.Web.HttpContext.Current.Response.Write("alert('" + "Lütfen Bol alan bırakmayınız" + "')");
}
else
{
xmlDoc = new XmlDocument();
file = Server.MapPath("~/Kullanicilar.xml");
//XML imizi yüklüyoruz
xmlDoc.Load(file);
//Nodemizi seçiyoruz
XmlNode selected = xmlDoc.SelectSingleNode("Kullanicilar/Kullanici[Ad='" + list_xml.SelectedItem.Text + "']");
//Gelenleri verileri güncelliyoruz
selected["Ad"].InnerText = txt_ad.Text;
selected["Soyad"].InnerText = txt_soyad.Text;
selected["Eposta"].InnerText = txt_eposta.Text;
if (dropList_cinsiyet.SelectedIndex == 0)
selected["Cinsiyet"].InnerText = "Erkek";
else
selected["Cinsiyet"].InnerText = "Kadın";
//Güncellenmiş Halini kaydediyoruz
xmlDoc.Save(file);
//Listeleyelim
XmlList();
//Formu Temizleyelım
FormClear();
}
Ve son olarak da silme butonumuzun kodları;
if (txt_ad.Text == "")
{
System.Web.HttpContext.Current.Response.Write("alert('" + "Lütfen Bir Seçim Yapınız" + "')");
}
else
{
xmlDoc = new XmlDocument();
file = Server.MapPath("~/Kullanicilar.xml");
//XML imizi yüklüyoruz
xmlDoc.Load(file);
//Nodemizi seçiyoruz
XmlNode selected = xmlDoc.SelectSingleNode("Kullanicilar/Kullanici[Ad='" + list_xml.SelectedItem.Text + "']");
//Gelenleri verileri siliyoruz
xmlDoc.DocumentElement.RemoveChild(selected);
//Güncellenmiş Halini kaydediyoruz
xmlDoc.Save(file);
//Listeleyelim
XmlList();
//Formu Temizleyelım
FormClear();
}
Ben basit olarak XML üzerinde CRUD işlemi yapan bir uygulama yaptım. Projeye Bu Linkden ulaşabilirsiniz.
Seçme işlemimiz;
Güncelleme işlemimiz;
Silme işlemimiz;