|  | 
        
            | 
                    
                        | XML Serileştirme Nitelikleri (Serialization Attribute) |  |  
                        | 
	
    
		
            | Gönderiliyor lütfen bekleyin... | 
 |  | 
        
            | Bu yazıda serileştirme işleminde kullanılan niteliklerden bahsedeceğim. Bir önceki bölümde sizlere .NET Framework’te 
	XMLSerialization işleminin nasıl yapıldığından bahsetmiştim. İlk bölümü okuyan 
	arkadaşların hatırlayacağı gibi XMLSerialization işleminde nesnemiz(object) 
	içinde public tanımlı özellik (property) ve alanları (field) 
	serileştirebiliyorduk(serialize). Ama serileştirme işleminin sonucunda aşağıda 
	yazdıklarım serileştirilmiş nesnenin kullanılacağı başka bir uygulamada problem 
	yaratabilmekte veya serileştirilip XML haline getirilmiş olan nesnemizin 
	okunabilirliğinin azalmasına neden olabilmektedir. 
 
 
	Bu tür problemleri çözmek ve serileştirilmiş nesneyi 
	kişiselleştirebilmek ve okunabilirliğini artırmak içinse 
	System.Xml.Serialization namespace’inin bize sağlamış olduğu Serileştirme 
		niteliklerini(Serialization attribute) kullanırız.
		
			Tüm public özellik(property) ve alanlar(field) serileştirilir(serialize), ama 
			biz nesnemizde bulunan tüm public özellik ve alanları serileştirmek 
			istemeyebiliriz.
			
	
		
			Serileştirdiğimiz özellik ve alanların nesne içindeki isimlendirmeleri 
			kullanılır.
			
	
		Aynı şekilde Root eleman adı olarak nesnemizin adı kullanılır. 
 
 Serileştirme 
		nitelikleri(Serialization attribute);
 
	kullanılır.
		
		En çok kullanılan serileştirme niteliklerini aşağıdaki tabloda bulabilirsiniz.
		
			Serialize ettiğimiz veriyi XML child eleman yerine XML attribute tanımlamak 
			için,
			
	
		
			Bir XML eleman veya attribute’unun adını değiştirmek için,
			
	
		
			Bir XML eleman veya attribute’unun XSD veritipini değiştirmek için,
			
	
		
			XML eleman veya attribute’unun namespace’sini değiştirmek için,
			
	
		Bir alan veya özelliği serialization işleminden çıkarmak için, 
		Tüm nitelik(attribute) adları sonunda “Attribute” kelimesi içerir. 
	Örneğin XmlAttribute ile XmlAttributeAttribute aynı anlamdadır ve kodumuz 
	içinde her ikisinide kullanabiliriz.
			| Attribute Adı 
 
 | Özellikler 
 
 | Uygulama Alanı 
 
 | Açıklama 
 
 |  
			| XmlAttribute 
 
 | AttributeName, DataType,
 Namespace
 | Public Alan(Field), Özellik(Property)
 | XML Attribute olarak serialize edeceğimiz alan veya özelliklerde kullanılır. 
 
 |  
			| XmlElement 
 
 | ElementName, DataType,
 Namespace
 | Public Alan(Field), Özellik(Property)
 | XML Element olarak serialize edeceğimiz alan veya özelliklerde kullanılır. 
 
 |  
			| XMlIgnore 
 
 | - 
 
 | Public Alan(Field), Özellik(Property)
 | Serialize etmek istediğimiz alan ve özellikleride kullanılır. 
 
 |  
			| XmlRoot 
 
 | ElementName, DataType,
 Namespace
 | Public Sınıf(Class) 
 
 | Root eleman adını değiştirmek için kullanılır. 
 
 |  
			| XmlText 
 
 | DataType 
 
 | Public Alan(Field), Özellik(Property)
 | Sadece text olarak serialize edeceğimiz alan veya özelliklerde kullanılır. 
 
 |  
 İsterseniz bu anlattıklarımı örnek üzerinde kullanalım.
 
 Örneğimiz için ilk bölümde oluşturduğumuz Personel ve Para sınıflarını 
	kullanacak ve aşağıda yazılı değişiklikleri yapacağız.
 
 
 
	Bu işlemleri gerçekleştirmek için Personel ve Para sınıflarımıza önce aşağıda 
	yazılı kodu kullanarak System.Xml.Serialization Namespace’ini import 
	ediyoruz.
	Root elemanın adını “Personel Bilgi” olarak değiştirecek
	
	Namespace’simize “urn:CSharpNedir” ekleyecek
	
	Departman alanı serialization işleminde değerlendirilmeyecek
	
	Email alan adı MailAdresi olarak gözükecek
	
	GirisTarihi alanının XSD veritipini “date” olarak belirlenecek.
	
		Para sınıfında Birim alanı Maas alanının niteliği(attribute) olarak gözükecek 
 
 
	
		| using System.Xml.Serialization; |  
	Tüm bu işlemleri gerçekleştirdikten sonra Personel ve Para 
	sınıflarımız görünümü aşağıdaki gibi olacaktır.
		
			Namespace’imizi import ettikten sonra 1 ve 2 nolu işlemleri gerçekleştirmek 
			için XmlRoot niteliğinin(attribute) “Namespace” ve “ElementName” özelliklerini 
			kullanıyoruz.
			
	
		
			3 nolu işlemi gerçekleştirmek için XmlIgnore niteliğini(attribute) 
			kullanıyoruz.
			
	
		
			4 nolu işlemi gerçekleştirmek için XmlElement niteliğinin(attribute) 
			“ElementName” özelliğini kullanıyoruz.
			
	
		
			5 nolu işlemi gerçekleştirmek için XmlElement niteliğinin(attribute) “DataType” 
			özelliğini kullanıyoruz.
			
	
		6 nolu işlemi gerçekleştirmek için XmlAttribute niteliğinin(attribute) 
		“AttributeName” özelliğini kullanıyoruz. 
 
 
	
		| using System; using System.Xml.Serialization;
			namespace PersonelBilgi
 {
 /*
 Serileştirdiğimiz nesnenin Namespace’ine "urn:CSharpNedir" ekliyor ve 
				Root eleman adını "PersonelBilgi” olarak değiştiriyoruz.(1 ve 2 nolu 
				işlemler)
 */ < br> 
				[XmlRoot(Namespace="urn:CSharpNedir",ElementName="PersonelBilgi")]
 public class Personel
 {
 public stringAd;
 [XmlIgnore()]//Departman alanını Serialize etmiyoruz.(3 nolu işlem)
 public stringDepartman;
 [XmlElement(ElementName="MailAdresi")]//Email alan adını "MailAdresi" olarak 
				değiştiriyoruz.(4 nolu işlem)
 public string Email;
 public int Yas;
 public Para Maas;
 [XmlElement(DataType="date")]//Giris Tarihi alanının veritipini XSD "date" 
				veritipine çeviriyoruz.(5 nolu işlem)
 public DateTime GirisTarihi;
 }//Personel sınıfı sonu
 
 public class Para
 {
 [XmlAttribute(AttributeName="ParaBirimi")]//Birim alanını attribute olarak 
				tanımlıyoruz.(6 nolu işlem)
 public string Birim;
 public decimal Tutar;
 }//Para sınıfı sonu
 }//Namespace sonu
 
 
 
 
 |  
 Formumuz üzerinde herhangi bir değişiklik yapmıyoruz. Gerekli 
	değişiklikleri yapıp uygulamamızı çalıştırdıktan sonra gerekli verileri girip 
	Serialize butonuna bastığımızda alacağımız çıktı aşağıdaki gibi olacaktır.
 
 
  Deserialize butonuna bastığımızda ise alacağımız çıktıda da 
	göreceğimiz gibi departman alanı boş olarak karşımıza çıkacaktır. Bunun nedeni 
	ise Departman alanını XmlIgnore attribute’u kullanarak serialize işlemine 
	tutmamamızdır. 
 
  Başka makalelerde görüşmek üzere. 
 Gökhan Gürel
 
 [email protected]
 
 
 
                Makale:XML Serileştirme Nitelikleri (Serialization Attribute) XML ve Web Servisleri Gökhan Gürel
 | 
        
            |  | 
        
            |  | 
        
            | 
                    
                        
                            
                        
                            Eklenen Son 10 
                            Bu Konuda Geçmiş 10 
                        
                            Bu Konuda Yazılmış Yazılmış 10 Makale Yükleniyor
                         
                            Son Eklenen 10 Makale Yükleniyor
                         
                            Bu Konuda Yazılmış Geçmiş Makaleler Yükleniyor
                         | 
        
            |  |