Bir önceki makalemizde xml dökümanların nasıl okunduğunu incelemiştik. Bugün ise xml formattaki bir döküman içerisinde güncelleme yapacağız.

Bir consol uygulaması açalım ve projeye add new item diyerek xml dosyası ekleyelim.

<?xml version="1.0" encoding="utf-8" ?>

<Urunler>

  <Urun Nitelik="true">

    <ID>1</ID>

    <Ad>Monitör</Ad>

    <Fiyat>200</Fiyat>

    <Kategori>Elektronik</Kategori>

  </Urun>

  <Urun Nitelik="true">

    <ID>2</ID>

    <Ad>Buzdolabı</Ad>

    <Fiyat>1500</Fiyat>

    <Kategori>Beyaz Eşya</Kategori>

  </Urun>

  <Urun Nitelik="false">

    <ID>3</ID>

    <Ad>Klavye</Ad>

    <Fiyat>50</Fiyat>

    <Kategori>Elektronik</Kategori>

  </Urun>

</Urunler>

Yapacağımız işlemin, sql’den bir data çekip güncelleme işleminden hiç bir farkı yok aslında. Tek yapmamız gereken, güncelleyeceğimiz elementi elde etmek ve gereken değerleri set etmek olacak. Daha sonra da döküman üzerinden Save metodunu çağıracağız.

Id’si 1 olan ürünün fiyatını 500 yapalım.

class Program

    {

        static void Main(string[] args)

        {

            XDocument xDoc = XDocument.Load(@"..\..\Urunler.xml");

 

            //XElement currentElement = xDoc.Root.Elements().FirstOrDefault(xe => xe.Element("ID").Value == "1");

            XElement currentElement = xDoc.Root.Elements().FirstOrDefault(xe => double.Parse(xe.Element("ID").Value) == 1);

           

            currentElement.SetElementValue("Fiyat", 500);

           

            xDoc.Save(@"..\..\Urunler.xml");

            Console.WriteLine(xDoc.ToString());

        }

    }

Untitled

Kategorisi Beyaz Eşye olan ürünlerin nitelik attribute’ünü false yapalım.

class Program

    {

        static void Main(string[] args)

        {

            XDocument xDoc = XDocument.Load(@"..\..\Urunler.xml");

 

            foreach (XElement currentElement in xDoc.Root.Elements().Where(xe => xe.Element("Kategori").Value == "Beyaz Eşya"))

            {

                currentElement.SetAttributeValue("Nitelik", "false");

            }

            xDoc.Save(@"..\..\Urunler.xml");

 

            Console.WriteLine(xDoc.ToString());

        }

    }

Untitled

Son olarak, ID’si 3 olan ürünü silelim.

class Program

    {

        static void Main(string[] args)

        {

            XDocument xDoc = XDocument.Load(@"..\..\Urunler.xml");

           

            XElement deletedElement = xDoc.Root.Elements().FirstOrDefault(xe => xe.Element("ID").Value == "3");

           

            deletedElement.Remove();

           

            xDoc.Save(@"..\..\Urunler.xml");

 

            Console.WriteLine(xDoc.ToString());

        }

    }

 

image

Bir sonraki seride Xml formatında döküman oluşturma işlemini ele alıyor olacağız. Faydalı olması dileği ile…



3 yorum:

Unknown dedi ki...

Merhaba öncelikle açıklayıcı ve anlaşılır anlatımın için teşekkürler. Güzel bir paylaşım. Benim bir sorum olacak. Yine aynı XML'de LINQ ile geriye değer dönderme nasıl yapılıyor. Yani örneğin ID'si 3 olan kaydın Ad'ını string olarak getir. Aynı şekilde fiyatını vs...
Şimdiden teşekkürler.

Onur Salkaya dedi ki...

Merhaba,

Aşağıdaki linkte istediğiniz örnekleri bulabilirsiniz.

http://onursalkaya.blogspot.com.tr/2011/12/c-linq-to-xml-ile-dokuman-okumak.html

erata dedi ki...

yazılarınız gayet sade ve anlaşılır. devamını diliyorum.
teşekkürler.

Yorum Gönder