XML Kaydetme Silme Güncelleme

Dosyayı buradan indirebilirsiniz.

Personeller.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace XmlTextReaderWriter
{
    class Personeller
    {
        public string Ad { get; set; }
        public string Soyad { get; set; }
        public decimal Maas { get; set; }

        public override string ToString()
        {
            return this.Ad + " " + this.Soyad;
        }
    }
}

Form1.cs

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Xml;
using System.IO;//xmltextreader xmltextwriter nesneleri için

namespace XmlTextReaderWriter
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        List<Personeller> liste = new List<Personeller>();
        const string dosya = "..\\..\\veriler.xml";
        bool guncellemeMi = false;
        int seciliindeks;
        int secilikaydet;

        private void Form1_Load(object sender, EventArgs e)
        {
            if (File.Exists(dosya))
            {
                DosyadanGetir(liste);
            }
        }

        private void DosyadanGetir(List<Personeller> liste)
        {
            lstPersoneller.Items.Clear();
            XmlTextReader okuyucu = new XmlTextReader(dosya);

            while (okuyucu.Read())
            {
                if (okuyucu.NodeType != XmlNodeType.Element) continue;
                Personeller p = new Personeller();

                okuyucu.ReadToFollowing("Ad");
                p.Ad = okuyucu.ReadInnerXml();

                okuyucu.ReadToFollowing("Soyad");
                p.Soyad = okuyucu.ReadInnerXml();

                okuyucu.ReadToFollowing("Maas");
                p.Maas = decimal.Parse(okuyucu.ReadInnerXml());
                liste.Add(p);
                lstPersoneller.Items.Add(p);
            }
            okuyucu.Close();
        }

        private void btnKaydet_Click(object sender, EventArgs e)
        {
            if (guncellemeMi == false)
            {
                Personeller p = new Personeller();
                p.Ad = txtAd.Text;
                p.Soyad = txtSoyad.Text;
                p.Maas = nudMaas.Value;

                liste.Add(p);
                lstPersoneller.Items.Add(p);

                lblAciklama.Text = p.Ad + " " + p.Soyad + " kaydedildi..";
                //vazgeçmiş gibi çalış
                btnVazgec.PerformClick();

            }
            else
            {
                liste.RemoveAt(seciliindeks);
                guncellemeMi = false;

                Personeller p = new Personeller();
                p.Ad = txtAd.Text;
                p.Soyad = txtSoyad.Text;
                p.Maas = nudMaas.Value;

                liste.Insert((seciliindeks), p);
                lstPersoneller.Items.Clear();
                lstPersoneller.Items.AddRange(liste.ToArray());
            }
        }

        private void btnVazgec_Click(object sender, EventArgs e)
        {
            txtSoyad.Clear();
            txtAd.Clear();
            nudMaas.Value = 0;
            txtAd.Focus();//imleç txtAd da beklesin
        }

        private void btnYazdir_Click(object sender, EventArgs e)
        {
            XmlTextWriter yazici = new XmlTextWriter(dosya, Encoding.Unicode);

            yazici.Formatting = Formatting.Indented;
            yazici.Indentation = 3;

            yazici.WriteStartDocument();//<?xml version="1.0" ?> kısmını yazduk
            //root element ya da DocumentElement
            yazici.WriteStartElement("Personeller");
            foreach (Personeller item in liste)
            {
                yazici.WriteStartElement("Personel");
                yazici.WriteElementString("Ad", item.Ad);
                yazici.WriteElementString("Soyad", item.Soyad);
                yazici.WriteElementString("Maas", item.Maas.ToString());
                yazici.WriteEndElement();
            }
            yazici.WriteEndElement();
            yazici.WriteEndDocument();
            yazici.Close();
            //MessageBox.Show("Dosya kaydedildi...");
            lblAciklama.Text = "Dosya kaydedildi";

        }

        private void btnOku_Click(object sender, EventArgs e)
        {
            liste.Clear();
            lstPersoneller.Items.Clear();
            DosyadanGetir(liste);
        }

        private void button1_Click(object sender, EventArgs e)
        {
            int secilenindeks = lstPersoneller.SelectedIndex;
            if (secilenindeks < 0) return;
            lstPersoneller.Items.RemoveAt(secilenindeks);
            liste.RemoveAt(secilenindeks);

            lblAciklama.Text = "Kayıt Silinmiştir.";
            //MessageBox.Show("Kayıt silinmiştir");
            btnYazdir.PerformClick();
        }

        private void button2_Click(object sender, EventArgs e)
        {
            guncellemeMi = true;
            seciliindeks = lstPersoneller.SelectedIndex;
            if (seciliindeks < 0) return;
            //lstPersoneller.Items.RemoveAt(seciliindeks);
            //liste.RemoveAt(seciliindeks);
            txtAd.Text = Convert.ToString(liste[Convert.ToInt32(seciliindeks)].Ad);
            txtSoyad.Text = Convert.ToString(liste[Convert.ToInt32(seciliindeks)].Soyad);
            nudMaas.Value = liste[seciliindeks].Maas;
        }
    }
}