XML ile CRUD ve Ek İşlemler

StarTÜRK

Kıdemli Üye
22 Eki 2009
3,765
0
\windows\sys
Bu dersimizde Xml dosyası ile neler yapabileceğimize değindikten sonra bir xml dosyasının yönetimi için gereken CRUD ve ek işlemleri nasıl yapılacağına dair bir örnek yapacağız.

Xml çok esnek bir yapıya sahiptir. Bu yüzden de kullanım alanı çok geniştir.Daha çok e-ticaret sitelerinde hizmet veya ürün sağlayıcılardan aldığımız bilgilerin işlenmesinde ve entegrasyonunda kullanılır. Xml ile (CDATA[]) html,script kodlarımızı saklayabiliriz. Bir sitenin tamamı xml yardımıyla da oluşturulabilir ya da sitemizdeki bazı kısımların xml ile oluşturabiliriz. Örneğin; anket, haber, reklam alanları (adrotator) gibi pek çok yerde kullanıcının doğrudan ilişkili olmadığı yerlerde kullanabiliriz. Blogsa'nın son sürümüne dikkat ettiyseniz, sitenin neredeyse yarısı xml teknolojisinden yararlanılarak oluşturulmuştur. Böylece veritabanına bağımlı olmayan bir site oluşturulmuştur. Bu da bilindiği gibi çok büyük bir avantajdır.

Şimdi örneğimizi yapmaya başlayalım.

İlk olarak visual studio yu açarak yeni bir web site oluşturuyoruz.
Örneğimizde bilgisayarların bir kaç özelliğini barındıran bir xml dosyası oluşturdum. Aşağıdaki resimde bu bilgilerin nasıl ayarlandığını görebilirsiniz.

xmlfileinfo.jpg


Daha sonra yapacağımız işlemlere gore sitenin hiyerarşik yapısını oluşturuyoruz (classları vs.)

Hiyerarsi.jpg


Burada gördüğünüz gibi App_Code özel klasörü içerisinde entity ve service klasörleri oluşturulmuş. CompEntity class'ı bizim her bir elemanın yani bilgisayarın özelliklerini birer property şeklinde tanımladık. CompService isimli class ise yapacağımız işlemlerin tamanını burada tanımlanan metodlarda yapıyoruz. Bu class'ı kullanacağımız sayfa içerisinde methodların dış kısmında oluşturarak bütün sayfa boyunca kullanabiliriz. Bu class'lara ait diagramlar aşağıdaki şekildedir.

classdiagram.jpg


Şimdi classlarda bulunan methodları açıklamaya çalışacağım. Fields kısmında XML_PATH adındanda anlaşılacağı gibi bir xml dosyasının yerini string olarak yazacağımız bir sabit tanımladım.
Methodların isimlerinden de anlayacağınız gibi CRUD işlemlerinin tamanı sağlanıyor. Ek olarak toplam adet, tamamını silme, List türünden elemanları verme gibi bir takım işlemlerde var.

Methodlara dikkat ederseniz bazılarına parametre olarak CompEntity nesnesi(class) gönderilmiştir. Hemen kod kısmına geçelim.Örneğin ekleme işlemi;

PHP:
  public **** AddComp(CompEntity compItem)      {         // xd nesnesi field olarak tanımladığımız için oradan bir nesne üretiyoruz.         xd = new Xml********();         xd.Load(XML_PATH);  // parametre olarak aldığımız compItem nesnesini kullanarak elementleri oluşturuyoruz.         XmlElement xe0 = xd.CreateElement("Id");         xe0.InnerText = compItem._Id.ToString();          XmlElement xe1 = xd.CreateElement("Brand");         xe1.InnerText = compItem._Brand;          XmlElement xe2 = xd.CreateElement("Description");         xe2.InnerText = compItem._Description;          XmlElement xe3 = xd.CreateElement("Price");         xe3.InnerText = compItem._Price.ToString();          XmlNode newNode = xd.CreateNode(XmlNodeType.Element, "Computer", "");         newNode.AppendChild(xe0);         newNode.AppendChild(xe1);         newNode.AppendChild(xe2);         newNode.AppendChild(xe3);          xd.********Element.AppendChild(newNode);          xd.Save(XML_PATH);               }
Şimdi yukarıda yazdığımız method nasıl kullanacağımıza geldi.

PHP:
 // nesneyi oluşturup özelliklerini belirtiyoruz.        CompEntity myItem = new CompEntity         {             _Id = System.Guid.NewGuid().ToString().Replace("-", ""),             _Brand = "Casper",             _Description = "heyoo",             _Price = Convert.ToDecimal(12)         };          service.AddComp(myItem);
Yukarıda nesneye ait bilgileri direct olarak ekledim. Siz bunları  textbox'lardan alabilirsiniz. Bu derste sadece ekleme işlemine değinmiş  olduk. Eğer diğer işlemlerinde nasıl yapıldığını merak ediyorsanız  aşağıdan uygulamanın kodlarını indirebilirsiniz.

Umarım iyi anlatabilmişimdir. İyi çalışmalar...
 
Üst

Turkhackteam.org internet sitesi 5651 sayılı kanun’un 2. maddesinin 1. fıkrasının m) bendi ile aynı kanunun 5. maddesi kapsamında "Yer Sağlayıcı" konumundadır. İçerikler ön onay olmaksızın tamamen kullanıcılar tarafından oluşturulmaktadır. Turkhackteam.org; Yer sağlayıcı olarak, kullanıcılar tarafından oluşturulan içeriği ya da hukuka aykırı paylaşımı kontrol etmekle ya da araştırmakla yükümlü değildir. Türkhackteam saldırı timleri Türk sitelerine hiçbir zararlı faaliyette bulunmaz. Türkhackteam üyelerinin yaptığı bireysel hack faaliyetlerinden Türkhackteam sorumlu değildir. Sitelerinize Türkhackteam ismi kullanılarak hack faaliyetinde bulunulursa, site-sunucu erişim loglarından bu faaliyeti gerçekleştiren ip adresini tespit edip diğer kanıtlarla birlikte savcılığa suç duyurusunda bulununuz.