Xml dosyasını veritabanı olarak kullanma

VB.NET

Boş xml dosyası oluşturmak için btnXmlOlusutur isimli butonunun clik olayına gelerek alttaki kodları uygulayalım.

Private Sub btnXmlOlusutur_Click(sender As Object, e As EventArgs)
If Not File.Exists("xmldosyam.xml") Then
' 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.
Dim xmlolustur As New XmlTextWriter("xmldosyam.xml", Nothing)
' 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
' Daha önceden dosya varsa veya herhangi bir hatada buradaki mesajı verir.
MessageBox.Show("Oluşturulmadı")
End If
End Sub

Xml dosyasına kayıt girmek için btnEkle isimli butonun clik olayına gelip alttaki kodları girelim

Private Sub btnEkle_Click(sender As Object, e As EventArgs)
Dim varmi As Boolean = False
Dim enBuyukId As Integer

Dim doc As New XmlDocument()
' Xml dosyamızı okumak için XmlDocument sınıfından yararlanıyoruz.
doc.Load("xmldosyam.xml")
Dim root As XmlElement = doc.DocumentElement
Dim kayitlar As XmlNodeList = 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 Then
' 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
End If

If varmi = True Then
Dim kayittakiSayilar As Integer() = New Integer(kayitlar.Count - 1) {}
' Kayıt sayısı kadar dizi tanımaldık.
Dim i As Integer = 0
' Diziyi arttırmak için sayı tanımladık.
For Each secilen As XmlNode In kayitlar
kayittakiSayilar(i) = Convert.ToInt32(secilen("id").InnerText)
' Kayıtlardaki tüm id yani numaraları kayittakiSayilar dizisi içine ekledik.
i = i + 1
Next

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
End If

If File.Exists("xmldosyam.xml") Then
' Xml dosyamıza kayıt eklemede hata almamak için dosyanın var olup olmadığını kontrol ediyoruz.

Dim UserElement As XmlElement = doc.CreateElement("Kullanicilar")
' Veritabanından tablo ismi gibi düşünbebilirsiniz.
Dim id As XmlElement = 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)

Dim adi As XmlElement = doc.CreateElement("adi")
' İkinci elementi ekliyoruz.(Yani ikinci kolonu)
adi.InnerText = txtKayitAdi.Text
UserElement.AppendChild(adi)

doc.DocumentElement.AppendChild(UserElement)

Dim xmleekle As New XmlTextWriter("xmldosyam.xml", Nothing)
xmleekle.Formatting = Formatting.Indented
doc.WriteContentTo(xmleekle)
xmleekle.Close()

' Kayıt işlemi başarılı bir şekilde bittikten sonra mesaj için label kullanabilirsiniz.
label1.Text = "Kayıt eklendi."
End If
End Sub

Yorum satırı olmayan kodları(C#) görebilmek için bir sonraki sayfaya geçin.

Bir Cevap Yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir