{"id":9097,"date":"2011-07-30T14:22:00","date_gmt":"2011-07-30T12:22:00","guid":{"rendered":"https:\/\/fatihboy.com\/post\/xml-yardimiyla-calisma-zamaninda-siniflar-olusturmak"},"modified":"2011-07-30T14:22:00","modified_gmt":"2011-07-30T12:22:00","slug":"xml-yardimiyla-calisma-zamaninda-siniflar-olusturmak","status":"publish","type":"post","link":"https:\/\/fatihboy.com\/en\/xml-yardimiyla-calisma-zamaninda-siniflar-olusturmak\/","title":{"rendered":"Xml Yard\u0131m\u0131yla \u00c7al\u0131\u015fma-Zaman\u0131nda S\u0131n\u0131flar Olu\u015fturmak"},"content":{"rendered":"<p>&nbsp;&nbsp; Microsoft Yaz Okuluna kat\u0131lamayanlardan zaman zaman ald\u0131\u011f\u0131m sitem dolu mesajlar ard\u0131ndan, kat\u0131l\u0131mc\u0131larla payla\u015ft\u0131\u011f\u0131m baz\u0131 konular\u0131 zaman zaman blogum \u00fczerinden sizlerle de payla\u015fmaya karar verdim.<\/p>\n\n\n\n<p>&nbsp;&nbsp; Bir y\u00f6netici olmak d\u0131\u015f\u0131nda, ayn\u0131 zamanda (<em>ve her zaman i\u00e7in<\/em>) bir yaz\u0131l\u0131m geli\u015ftirici olarak, yazd\u0131\u011f\u0131m kodlarda her zaman i\u00e7in ileriyi d\u00fc\u015f\u00fcnmeyi isterim. Her ne kadar pek \u00e7ok firmada yaz\u0131l\u0131m geli\u015ftirme s\u00fcre\u00e7leri k\u0131s\u0131tl\u0131 bir zaman dilimi i\u00e7ine s\u0131k\u0131\u015ft\u0131r\u0131lm\u0131\u015f dahi olsa, proje teslim s\u00fcreleri olduk\u00e7a dar tutulsa da esnek kod yaz\u0131lmas\u0131na ayr\u0131lacak olan zaman\u0131n geri d\u00f6n\u00fc\u015f\u00fc y\u00fcksek olacakt\u0131r.<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp; Konunun daha peki\u015fmesi ad\u0131na \u00f6rnek \u00fczerinden gitmek san\u0131r\u0131m daha faydal\u0131 olacakt\u0131r. Standart bir serile\u015ftirme i\u015flemini d\u00fc\u015f\u00fcn\u00fcn; projenizde yer alan a\u015fa\u011f\u0131daki gibi bir Ogrenci s\u0131n\u0131f\u0131n\u0131 xml\u2019e serile\u015ftirmek eminim ki sizler i\u00e7in olduk\u00e7a basit bir i\u015f olacakt\u0131r:<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"csharp\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">public class Ogrenci {\n    public string Adi;\n    public string Bolum;\n}<\/pre>\n\n\n\n<p>&nbsp;&nbsp; Bunun i\u00e7in \u00f6ncelikle yapman\u0131z gereken, a\u015fa\u011f\u0131da \u00f6rnekledi\u011fim gibi olmas\u0131n\u0131 istedi\u011fimiz xml \u00e7\u0131kt\u0131s\u0131 hakk\u0131nda .Net Framework\u2019\u00fc bilgilendirecek, Xml\u2019in olu\u015fturulmas\u0131na yard\u0131m edecek olan attribute\u2019leri (\u00f6<em>znitelikleri<\/em>) eklemek olmal\u0131:<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"csharp\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">[XmlRoot(Namespace=\"https:\/\/fatihboy.com\",ElementName=\"OgrenciListesi\")]\npublic class OgrenciListesi {\n  [XmlArray(ElementName=\"Ogrenciler\")]\n  [XmlArrayItem(ElementName=\"Ogrenci\")]\n  public Ogrenci[] Ogrenciler;\n}\n\n[XmlType(Namespace=\"https:\/\/fatihboy.com\",TypeName=\"Ogrenci\")]\npublic class Ogrenci {\n    [XmlAttribute]\n    public string Adi;\n\n    [XmlAttribute]\n    public string Bolum;\n}<\/pre>\n\n\n\n<p>&nbsp;&nbsp; Bu i\u015flem ard\u0131ndan, a\u015fa\u011f\u0131daki gibi iki-\u00fc\u00e7 sat\u0131rl\u0131k bir kod ile olduk\u00e7a kolay \u015fekilde s\u0131n\u0131flar Xml olarak tutabilir ya da xml\u2019den geri okuyabiliriz:<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"csharp\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">OgrenciListesi ogrenciListesi = new OgrenciListesi {\n    Ogrenciler = new[] {\n        new Ogrenci{ Adi = \"Duru\", Bolum = \"Bil. M\u00fch.\" },\n        new Ogrenci{ Adi = \"Fatih\", Bolum = \"Bil. M\u00fch.\" },\n        new Ogrenci{ Adi = \"Melis\", Bolum = \"Deri M\u00fch.\" }\n    }\n};\n\nXmlSerializer serializer = new XmlSerializer(typeof(OgrenciListesi));\n\nusing (StreamWriter dosya = File.CreateText(\"ogrenciListesi.xml\")) {\n    serializer.Serialize(dosya, ogrenciListesi);\n}<\/pre>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"csharp\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">XmlSerializer serializer = new XmlSerializer(typeof(OgrenciListesi));\n\nusing (StreamReader dosya = File.OpenText(\"ogrenciListesi.xml\")) {\n var ogrenciListesi=(OgrenciListesi)serializer.Deserialize(dosya);\n    .\n    .\n    .\n}<\/pre>\n\n\n\n<p>&nbsp;&nbsp; Yukar\u0131daki \u00f6rnek kodlar\u0131 \u00e7al\u0131\u015ft\u0131rd\u0131\u011f\u0131m\u0131zda ise a\u015fa\u011f\u0131daki \u015fekilde bir xml dosyas\u0131 olu\u015fturulabilir ve geri okunabilir olacakt\u0131r;<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"xml\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">&lt;?xml version=\"1.0\" encoding=\"utf-8\"?>\n&lt;OgrenciListesi xmlns:xsi=\"http:\/\/www.w3.org\/2001\/XMLSchema-instance\"\n                xmlns:xsd=\"http:\/\/www.w3.org\/2001\/XMLSchema\"\n                xmlns=\"https:\/\/fatihboy.com\">\n  &lt;Ogrenciler>\n    &lt;Ogrenci Adi=\"Duru\" Bolum=\"Bil. M\u00fch.\" \/>\n    &lt;Ogrenci Adi=\"Fatih\" Bolum=\"Bil. M\u00fch.\" \/>\n    &lt;Ogrenci Adi=\"Melis\" Bolum=\"Deri M\u00fch.\" \/>\n  &lt;\/Ogrenciler>\n&lt;\/OgrenciListesi><\/pre>\n\n\n\n<p>&nbsp;&nbsp; Kompleks olmayan, olduk\u00e7a basit ve eminim ki pek \u00e7ok senaryoda da i\u015fimizi g\u00f6recek olan bir y\u00f6ntem; fakat yeterince geni\u015fletilebilir de\u011fil. Bu yakla\u015f\u0131mda, serile\u015ftirmek istedi\u011finiz her yeni s\u0131n\u0131fta xml serile\u015ftirme \u00f6zniteliklerini tekrar tekrar tan\u0131mlamal\u0131, birden fazla s\u0131n\u0131fta toparlanm\u0131\u015f olan verilerin bulundu\u011fu senaryolarda yeni ara s\u0131n\u0131flar olu\u015fturarak veriyi bu ara s\u0131n\u0131flar \u00fczerinden okumal\u0131s\u0131n\u0131z. B\u00f6ylesi bir durumda da i\u015f hem giderek karma\u015f\u0131kla\u015facak, hem de geli\u015ftirme s\u00fcresi eskisine oranla daha da uzayacakt\u0131r.<\/p>\n\n\n\n<p>&nbsp;&nbsp; Peki bu duruma alternatif olarak nas\u0131l bir yakla\u015f\u0131m \u00fcretilmeli? Bu yeni senaryoda takip edilmesi gereken yakla\u015f\u0131m \u00f6ncelikli olarak xml dosyas\u0131 ile veriyi ta\u015f\u0131yan s\u0131n\u0131flar aras\u0131ndaki bire bir ba\u011flant\u0131y\u0131 kald\u0131rmak olmal\u0131,&nbsp; yani her yeni s\u0131n\u0131f i\u00e7in yeni bir xml tasar\u0131m\u0131 geli\u015ftirme zorunlulu\u011fundan kurtulmal\u0131y\u0131z.<\/p>\n\n\n\n<p>&nbsp;&nbsp; Peki \u015f\u00f6yle bir tasar\u0131m nas\u0131l olur? \u00d6yle bir kod yazsak ki, xml i\u00e7erisinde statik olarak s\u0131n\u0131flar\u0131 ve de\u011ferlerini vermek yerine hangi s\u0131n\u0131f\u0131n olu\u015fturulaca\u011f\u0131n\u0131, bu s\u0131n\u0131f\u0131n hangi alanlar\u0131na hangi de\u011ferlerin at\u0131laca\u011f\u0131n\u0131 tarif etsek. Uygulamam\u0131z, b\u00f6ylesi bir xml\u2019i okuyarak yorumlasa ve ard\u0131ndan da \u00f6nce tarif edilen s\u0131n\u0131flar\u0131 olu\u015ftursa, sonra da bu s\u0131n\u0131flar\u0131n alanlar\u0131na xml i\u00e7erisinde verilen de\u011ferleri atasa\u2026 G\u00fczel olur de\u011fil mi!<\/p>\n\n\n\n<p>&nbsp;&nbsp; B\u00f6ylesi bir uygulamaya veri saylayacak olan xml dosyas\u0131n\u0131 ise a\u015fa\u011f\u0131daki \u015fekilde tasarlad\u0131m, sizlerde kendi ihtiya\u00e7lar\u0131n\u0131z do\u011frultusunda bu tasar\u0131mla oynayabilir, ekleme ve \u00e7\u0131kartmalar yapabilirsiniz;<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"xml\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">&lt;?xml version=\"1.0\" encoding=\"utf-8\"?>\n&lt;yapilandirma xmlns:xsi=\"http:\/\/www.w3.org\/2001\/XMLSchema-instance\"\n              xmlns:xsd=\"http:\/\/www.w3.org\/2001\/XMLSchema\"\n              xmlns=\"https:\/\/fatihboy.com\">\n  &lt;siniflar>\n    &lt;sinif tur=\"Ogrenci\">\n      &lt;alanlar>\n        &lt;alan adi=\"Adi\" deger=\"Duru\" \/>\n        &lt;alan adi=\"Bolum\" deger=\"Bil. M\u00fch.\" \/>\n      &lt;\/alanlar>\n    &lt;\/sinif>\n\n    &lt;sinif tur=\"Ogrenci\">\n      &lt;alanlar>\n        &lt;alan adi=\"Adi\" deger=\"Fatih\" \/>\n        &lt;alan adi=\"Bolum\" deger=\"Bil. M\u00fch.\" \/>\n      &lt;\/alanlar>\n    &lt;\/sinif>\n\n    &lt;sinif tur=\"Ogrenci\">\n      &lt;alanlar>\n        &lt;alan adi=\"Adi\" deger=\"Melis\" \/>\n        &lt;alan adi=\"Bolum\" deger=\"Deri M\u00fch.\" \/>\n      &lt;\/alanlar>\n    &lt;\/sinif>\n  &lt;\/siniflar>\n&lt;\/yapilandirma><\/pre>\n\n\n\n<p>&nbsp; Dikkat edecek olursan\u0131z, bu tasar\u0131m\u0131n \u00f6ncekinden en b\u00fcy\u00fck farkl\u0131l\u0131klar\u0131ndan birisi aya\u011fa kald\u0131r\u0131lmak istenen, verisi belirtilen s\u0131n\u0131fa dair t\u00fcr bilgisinin de veriliyor olmas\u0131d\u0131r. Bizlerde bu bilgiyi kullanarak <strong>reflection<\/strong> yard\u0131m\u0131yla kolayl\u0131kla ilgili s\u0131n\u0131f\u0131 olu\u015fturabilir, alanlara de\u011ferleri atayabiliriz. A\u015fa\u011f\u0131da, yukar\u0131daki gibi bir xml dosyas\u0131n\u0131 okuyup yazabilecek&nbsp; olan s\u0131n\u0131flar\u0131 sizlerle payla\u015f\u0131yorum;<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"csharp\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">[XmlRoot(\"yapilandirma\", Namespace = \"https:\/\/fatihboy.com\")]\npublic class Yapilandirma {\n    [XmlArray(ElementName = \"siniflar\")]\n    [XmlArrayItem(ElementName = \"sinif\")]\n    public Sinif[] Siniflar;\n}\n\n[XmlType(\"Sinif\", Namespace = \"https:\/\/fatihboy.com\")]\npublic class Sinif {\n    [XmlAttribute(\"tur\")]\n    public string Tur;\n\n    [XmlArray(ElementName = \"alanlar\")]\n    [XmlArrayItem(ElementName = \"alan\")]\n    public Alan[] Alanlar;\n}\n\n[XmlType(\"Alan\", Namespace = \"https:\/\/fatihboy.com\")]\npublic class Alan {\n    [XmlAttribute(\"adi\")]\n    public string Adi;\n\n    [XmlAttribute(\"deger\")]\n    public string Deger;\n}<\/pre>\n\n\n\n<p>&nbsp; Tasar\u0131m\u0131m\u0131z\u0131 yap\u0131p, veriyi sunacak olan xml dosyam\u0131z\u0131 da haz\u0131rlad\u0131ktan sonra a\u015fa\u011f\u0131daki kod yard\u0131m\u0131yla kolayl\u0131kla veriyi okuyabiliriz;<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"csharp\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">Yapilandirma yapilandirma = null;\nXmlSerializer serializer = new XmlSerializer(typeof(Yapilandirma));\n\nusing (StreamReader dosya = File.OpenText(\"yapilandirmaBilgisi.xml\")) {\n    yapilandirma = (Yapilandirma)serializer.Deserialize(dosya);\n}<\/pre>\n\n\n\n<p>&nbsp;&nbsp; Bu noktadan sonra art\u0131k i\u015f reflection konusundaki yetene\u011fimize kal\u0131yor. Gelen yap\u0131land\u0131rma bilgisi i\u00e7erisindeki her bir s\u0131n\u0131f i\u00e7in t\u00fcr bilgisini alarak ilgili s\u0131n\u0131f\u0131 olu\u015fturmal\u0131 ve alanlar\u0131na verilen de\u011ferleri atamal\u0131y\u0131z; ama merak etmeyin, bu i\u015flemlerde ger\u00e7ekten olduk\u00e7a kolay. A\u015fa\u011f\u0131da, her bir s\u0131n\u0131f bilgisi i\u00e7in verilen t\u00fcr bilgisi yard\u0131m\u0131yla s\u0131n\u0131f\u0131n bir \u00f6rne\u011finin nas\u0131l olu\u015fturulabilece\u011fini g\u00f6rebilirsiniz;<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"csharp\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">foreach (Sinif sinif in yapilandirma.Siniflar) {\n    string sinifTamAdi = \"Enterprisecoding.\" + sinif.Tur;\n    Type sinifTuru = Type.GetType(sinifTamAdi);\n\n    object sinifOrnegi = Activator.CreateInstance(sinifTuru);\n}<\/pre>\n\n\n\n<p>&nbsp;&nbsp; Dikkat edecek olursan\u0131z s\u0131n\u0131f\u2019\u0131n ad\u0131n\u0131n tutuldu\u011fu <em>Tur<\/em> alan\u0131 do\u011frudan kullan\u0131lmayacak bir \u00f6n ek ile birle\u015ftirilerek kullan\u0131lmakta. Bunun sebebi T\u00fcr bilgisine ula\u015fmakta kulland\u0131\u011f\u0131m\u0131z <strong>Type.GetType<\/strong> fonksiyonunun s\u0131n\u0131f\u0131n tam ad\u0131na ihtiya\u00e7 duymas\u0131d\u0131r. Bir s\u0131n\u0131f\u0131n tam ad\u0131 ise i\u00e7inde bulundu\u011fu namespace ve s\u0131n\u0131f ad\u0131n\u0131n birle\u015ftirilmesinden olu\u015fmas\u0131d\u0131r. Tabi ki isterseniz xml i\u00e7erisinde, sadece s\u0131n\u0131f ad\u0131n\u0131 tutmak yerine s\u0131n\u0131f\u0131n tam ad\u0131n\u0131 da tutabilmeniz m\u00fcmk\u00fcn; fakat bu durumda kodunuzdaki refakt\u00f6rlerde (\u00f6rne\u011fin; s\u0131n\u0131flar\u0131n farkl\u0131 namespace\u2019lere ta\u015f\u0131nmas\u0131 sonras\u0131nda) xml\u2019inizi yeniden d\u00fczenlemeniz gerekecektir. Bu \u015fekilde tutmam\u0131n bir ba\u015fka sebebi de uygulama g\u00fcvenli\u011fi. Sadece s\u0131n\u0131f ad\u0131n\u0131 tutup, sonras\u0131nda namespace ile birle\u015ftirerek t\u00fcr\u2019e ula\u015f\u0131yor olmak bize sadece belirli bir namespace alt\u0131ndaki t\u00fcrleri bu xml dosyas\u0131 ile olu\u015fturabilmek gibi \u00f6nemli bir kontrol mekanizmas\u0131 sunmaktad\u0131r. A\u015fa\u011f\u0131da xml i\u00e7erisinden ald\u0131\u011f\u0131m\u0131z s\u0131n\u0131f bilgisinde yer alan her bir alan i\u00e7in nas\u0131l de\u011fer atayaca\u011f\u0131m\u0131za dair kod par\u00e7ac\u0131\u011f\u0131n\u0131 bulabilirsiniz;<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"csharp\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">foreach (Alan alan in sinif.Alanlar) {\n    FieldInfo alanBilgisi = sinifTuru.GetField(alan.Adi);\n\n    alanBilgisi.SetValue(sinifOrnegi, alan.Deger);\n}<\/pre>\n\n\n\n<p>&nbsp;&nbsp; Bu kod par\u00e7ac\u0131\u011f\u0131 ile art\u0131k ihtiyac\u0131m\u0131 olan t\u00fcm ad\u0131mlar\u0131 tamamlam\u0131\u015f oluyoruz. Son olarak; olu\u015fturdu\u011funuz s\u0131n\u0131f bir liste i\u00e7inde tutarak daha sonras\u0131nda uygulamam\u0131z i\u00e7erisinde kullanabiliyor olaca\u011f\u0131z.<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp; Yaz\u0131m\u0131n ba\u015f\u0131nda sizlerle payla\u015ft\u0131\u011f\u0131m standart xml serile\u015ftirme y\u00f6nteminden farkl\u0131 olarak \u00f6\u011frendi\u011fimiz bu yeni y\u00f6ntem sayesinde istedi\u011finiz t\u00fcm s\u0131n\u0131flara ait bilgileri hi\u00e7 bir ek i\u015flem yapmaya, kodunuzu de\u011fi\u015ftirmeye gerek kalmaks\u0131z\u0131n xml dosyas\u0131nda okuyabilir, ilgili s\u0131n\u0131flar\u0131 olu\u015fturabiliriz.<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp; Noktada \u00f6nemli bir not d\u00fc\u015fmem gerekli; pek \u00e7ok yaz\u0131l\u0131mc\u0131n\u0131n yapt\u0131\u011f\u0131 bir hatad\u0131r, yeni \u00f6\u011frenilen bir konuyu hemen devam eden bir projede kullanmak. Ayn\u0131, html ve javascript\u2019i yeni \u00f6\u011frenenlerin web sitelerini gereksiz pek \u00e7ok script ile doldurmas\u0131 gibi.. Sizlerle payla\u015fm\u0131\u015f oldu\u011fu bu yeni y\u00f6ntem her ne kadar olduk\u00e7a genel ge\u00e7er ve pek \u00e7ok uygulama i\u00e7erisinde kullan\u0131labilir olsa da, tabi ki beraberinde d\u00fc\u015f\u00fckte olsa bir maliyeti s\u00f6z konusudur. E\u011fer uygulaman\u0131z xml i\u00e7erisinden s\u0131n\u0131f bilgileri okuyorken bu kadar esnek bir yap\u0131ya ihtiyac\u0131n\u0131z yoksa, i\u015flem yapaca\u011f\u0131n\u0131z s\u0131n\u0131flar bir elin parmaklar\u0131n\u0131 a\u015fm\u0131yorsa bu y\u00f6ntemi kullanman\u0131za b\u00fcy\u00fck ihtimalle gerek kalmayacakt\u0131r.<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp; Konunun anla\u015f\u0131labilmesi i\u00e7in olduk\u00e7a basit tutmaya \u00e7al\u0131\u015ft\u0131\u011f\u0131m bu kodda, dikkat edecek olursan\u0131z, s\u0131n\u0131flar i\u00e7erisindeki alanlar\u0131m\u0131z\u0131n string oldu\u011fu ve serile\u015ftirilen her s\u0131n\u0131f\u0131n mutlaka bir default constructer\u2019\u0131 oldu\u011fu varsay\u0131m\u0131 \u00fczerinden gittik. Daha ileri d\u00fczey kullan\u0131mlarda \u00f6rnek kod \u00fczerinde yap\u0131lacak ufak de\u011fi\u015fikliklerle string d\u0131\u015f\u0131ndaki veri t\u00fcrleri de kullanabiliriz. Hatta xml i\u00e7erisinde kullan\u0131lmak istenen constructer ve de\u011ferleri de al\u0131nabilir ve s\u0131n\u0131f ilgili constructer yard\u0131m\u0131yla ilklendirilebilir de.<\/p>\n\n\n\n<p>&nbsp;&nbsp; A\u015fa\u011f\u0131da olu\u015fturdu\u011fumuz kodu bir b\u00fct\u00fcn halinde bulabilirsiniz;<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"csharp\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">[XmlRoot(\"yapilandirma\", Namespace = \"https:\/\/fatihboy.com\")]\npublic class Yapilandirma {\n    [XmlArray(ElementName = \"siniflar\")]\n    [XmlArrayItem(ElementName = \"sinif\")]\n    public Sinif[] Siniflar;\n}\n\n[XmlType(\"Sinif\", Namespace = \"https:\/\/fatihboy.com\")]\npublic class Sinif {\n    [XmlAttribute(\"tur\")]\n    public string Tur;\n\n    [XmlArray(ElementName = \"alanlar\")]\n    [XmlArrayItem(ElementName = \"alan\")]\n    public Alan[] Alanlar;\n}\n\n[XmlType(\"Alan\", Namespace = \"https:\/\/fatihboy.com\")]\npublic class Alan {\n    [XmlAttribute(\"adi\")]\n    public string Adi;\n\n    [XmlAttribute(\"deger\")]\n    public string Deger;\n}\n\n\/\/.\n\/\/.\n\/\/.\n\/\/.\nYapilandirma yapilandirma = null;\nXmlSerializer serializer = new XmlSerializer(typeof(Yapilandirma));\n\nusing (StreamReader dosya = File.OpenText(\"yapilandirmaBilgisi.xml\")) {\n    yapilandirma = (Yapilandirma)serializer.Deserialize(dosya);\n}\n\nList&lt;object> siniflar = new List&lt;object>();\nforeach (Sinif sinif in yapilandirma.Siniflar) {\n    string sinifTamAdi = \"Enterprisecoding.\" + sinif.Tur;\n    Type sinifTuru = Type.GetType(sinifTamAdi);\n\n    object sinifOrnegi = Activator.CreateInstance(sinifTuru);\n\n    foreach (Alan alan in sinif.Alanlar) {\n        FieldInfo alanBilgisi = sinifTuru.GetField(alan.Adi);\n\n        alanBilgisi.SetValue(sinifOrnegi, alan.Deger);\n    }\n\n    siniflar.Add(sinifOrnegi);\n}<\/pre>","protected":false},"excerpt":{"rendered":"<p>&nbsp;&nbsp; Microsoft Yaz Okuluna kat\u0131lamayanlardan zaman zaman ald\u0131\u011f\u0131m sitem dolu mesajlar ard\u0131ndan, kat\u0131l\u0131mc\u0131larla payla\u015ft\u0131\u011f\u0131m baz\u0131 konular\u0131 zaman zaman blogum \u00fczerinden sizlerle de payla\u015fmaya karar verdim. &nbsp;&nbsp; Bir y\u00f6netici olmak d\u0131\u015f\u0131nda, ayn\u0131 zamanda (ve her zaman i\u00e7in) bir yaz\u0131l\u0131m geli\u015ftirici olarak, yazd\u0131\u011f\u0131m kodlarda her zaman i\u00e7in ileriyi d\u00fc\u015f\u00fcnmeyi isterim. Her ne kadar pek \u00e7ok firmada yaz\u0131l\u0131m&#8230;<\/p>\n<p><a class=\"read-more\" href=\"https:\/\/fatihboy.com\/en\/xml-yardimiyla-calisma-zamaninda-siniflar-olusturmak\/\">Read More<\/a><\/p>","protected":false},"author":1,"featured_media":9098,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[77,28],"tags":[105,41,127],"class_list":["post-9097","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-csharp","category-turkce","tag-attribute","tag-c","tag-xml"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v26.7 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Xml Yard\u0131m\u0131yla \u00c7al\u0131\u015fma-Zaman\u0131nda S\u0131n\u0131flar Olu\u015fturmak - Fatih Boy<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/fatihboy.com\/en\/xml-yardimiyla-calisma-zamaninda-siniflar-olusturmak\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Xml Yard\u0131m\u0131yla \u00c7al\u0131\u015fma-Zaman\u0131nda S\u0131n\u0131flar Olu\u015fturmak - Fatih Boy\" \/>\n<meta property=\"og:description\" content=\"&nbsp;&nbsp; Microsoft Yaz Okuluna kat\u0131lamayanlardan zaman zaman ald\u0131\u011f\u0131m sitem dolu mesajlar ard\u0131ndan, kat\u0131l\u0131mc\u0131larla payla\u015ft\u0131\u011f\u0131m baz\u0131 konular\u0131 zaman zaman blogum \u00fczerinden sizlerle de payla\u015fmaya karar verdim. &nbsp;&nbsp; Bir y\u00f6netici olmak d\u0131\u015f\u0131nda, ayn\u0131 zamanda (ve her zaman i\u00e7in) bir yaz\u0131l\u0131m geli\u015ftirici olarak, yazd\u0131\u011f\u0131m kodlarda her zaman i\u00e7in ileriyi d\u00fc\u015f\u00fcnmeyi isterim. Her ne kadar pek \u00e7ok firmada yaz\u0131l\u0131m...Read More\" \/>\n<meta property=\"og:url\" content=\"https:\/\/fatihboy.com\/en\/xml-yardimiyla-calisma-zamaninda-siniflar-olusturmak\/\" \/>\n<meta property=\"og:site_name\" content=\"Fatih Boy\" \/>\n<meta property=\"article:published_time\" content=\"2011-07-30T12:22:00+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/fatihboy.com\/wp-content\/uploads\/2011\/07\/xml2Executable_thumb.png\" \/>\n\t<meta property=\"og:image:width\" content=\"209\" \/>\n\t<meta property=\"og:image:height\" content=\"208\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Fatih Boy\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Fatih Boy\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"9 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/fatihboy.com\/xml-yardimiyla-calisma-zamaninda-siniflar-olusturmak\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/fatihboy.com\/xml-yardimiyla-calisma-zamaninda-siniflar-olusturmak\/\"},\"author\":{\"name\":\"Fatih Boy\",\"@id\":\"https:\/\/fatihboy.com\/#\/schema\/person\/6b06a41d42eed36eaa0780fbeb774158\"},\"headline\":\"Xml Yard\u0131m\u0131yla \u00c7al\u0131\u015fma-Zaman\u0131nda S\u0131n\u0131flar Olu\u015fturmak\",\"datePublished\":\"2011-07-30T12:22:00+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/fatihboy.com\/xml-yardimiyla-calisma-zamaninda-siniflar-olusturmak\/\"},\"wordCount\":1350,\"commentCount\":1,\"publisher\":{\"@id\":\"https:\/\/fatihboy.com\/#\/schema\/person\/6b06a41d42eed36eaa0780fbeb774158\"},\"image\":{\"@id\":\"https:\/\/fatihboy.com\/xml-yardimiyla-calisma-zamaninda-siniflar-olusturmak\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/fatihboy.com\/wp-content\/uploads\/2011\/07\/xml2Executable_thumb.png\",\"keywords\":[\"Attribute\",\"C#\",\"Xml\"],\"articleSection\":[\"C#\",\"T\u00fcrk\u00e7e\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/fatihboy.com\/xml-yardimiyla-calisma-zamaninda-siniflar-olusturmak\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/fatihboy.com\/xml-yardimiyla-calisma-zamaninda-siniflar-olusturmak\/\",\"url\":\"https:\/\/fatihboy.com\/xml-yardimiyla-calisma-zamaninda-siniflar-olusturmak\/\",\"name\":\"Xml Yard\u0131m\u0131yla \u00c7al\u0131\u015fma-Zaman\u0131nda S\u0131n\u0131flar Olu\u015fturmak - Fatih Boy\",\"isPartOf\":{\"@id\":\"https:\/\/fatihboy.com\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/fatihboy.com\/xml-yardimiyla-calisma-zamaninda-siniflar-olusturmak\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/fatihboy.com\/xml-yardimiyla-calisma-zamaninda-siniflar-olusturmak\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/fatihboy.com\/wp-content\/uploads\/2011\/07\/xml2Executable_thumb.png\",\"datePublished\":\"2011-07-30T12:22:00+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/fatihboy.com\/xml-yardimiyla-calisma-zamaninda-siniflar-olusturmak\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/fatihboy.com\/xml-yardimiyla-calisma-zamaninda-siniflar-olusturmak\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/fatihboy.com\/xml-yardimiyla-calisma-zamaninda-siniflar-olusturmak\/#primaryimage\",\"url\":\"https:\/\/fatihboy.com\/wp-content\/uploads\/2011\/07\/xml2Executable_thumb.png\",\"contentUrl\":\"https:\/\/fatihboy.com\/wp-content\/uploads\/2011\/07\/xml2Executable_thumb.png\",\"width\":209,\"height\":208},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/fatihboy.com\/xml-yardimiyla-calisma-zamaninda-siniflar-olusturmak\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/fatihboy.com\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Xml Yard\u0131m\u0131yla \u00c7al\u0131\u015fma-Zaman\u0131nda S\u0131n\u0131flar Olu\u015fturmak\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/fatihboy.com\/#website\",\"url\":\"https:\/\/fatihboy.com\/\",\"name\":\"Fatih Boy\",\"description\":\"Ki\u015fisel Web Sitesi\",\"publisher\":{\"@id\":\"https:\/\/fatihboy.com\/#\/schema\/person\/6b06a41d42eed36eaa0780fbeb774158\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/fatihboy.com\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\/\/fatihboy.com\/#\/schema\/person\/6b06a41d42eed36eaa0780fbeb774158\",\"name\":\"Fatih Boy\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/fatihboy.com\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/5b3de123ad95a2ffe30b75a54cee98b55f65185c6d6805b35088a3d945f2feb4?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/5b3de123ad95a2ffe30b75a54cee98b55f65185c6d6805b35088a3d945f2feb4?s=96&d=mm&r=g\",\"caption\":\"Fatih Boy\"},\"logo\":{\"@id\":\"https:\/\/fatihboy.com\/#\/schema\/person\/image\/\"},\"sameAs\":[\"https:\/\/fatihboy.com\"],\"url\":\"https:\/\/fatihboy.com\/en\/author\/fatih\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Xml Yard\u0131m\u0131yla \u00c7al\u0131\u015fma-Zaman\u0131nda S\u0131n\u0131flar Olu\u015fturmak - Fatih Boy","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/fatihboy.com\/en\/xml-yardimiyla-calisma-zamaninda-siniflar-olusturmak\/","og_locale":"en_US","og_type":"article","og_title":"Xml Yard\u0131m\u0131yla \u00c7al\u0131\u015fma-Zaman\u0131nda S\u0131n\u0131flar Olu\u015fturmak - Fatih Boy","og_description":"&nbsp;&nbsp; Microsoft Yaz Okuluna kat\u0131lamayanlardan zaman zaman ald\u0131\u011f\u0131m sitem dolu mesajlar ard\u0131ndan, kat\u0131l\u0131mc\u0131larla payla\u015ft\u0131\u011f\u0131m baz\u0131 konular\u0131 zaman zaman blogum \u00fczerinden sizlerle de payla\u015fmaya karar verdim. &nbsp;&nbsp; Bir y\u00f6netici olmak d\u0131\u015f\u0131nda, ayn\u0131 zamanda (ve her zaman i\u00e7in) bir yaz\u0131l\u0131m geli\u015ftirici olarak, yazd\u0131\u011f\u0131m kodlarda her zaman i\u00e7in ileriyi d\u00fc\u015f\u00fcnmeyi isterim. Her ne kadar pek \u00e7ok firmada yaz\u0131l\u0131m...Read More","og_url":"https:\/\/fatihboy.com\/en\/xml-yardimiyla-calisma-zamaninda-siniflar-olusturmak\/","og_site_name":"Fatih Boy","article_published_time":"2011-07-30T12:22:00+00:00","og_image":[{"width":209,"height":208,"url":"https:\/\/fatihboy.com\/wp-content\/uploads\/2011\/07\/xml2Executable_thumb.png","type":"image\/png"}],"author":"Fatih Boy","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Fatih Boy","Est. reading time":"9 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/fatihboy.com\/xml-yardimiyla-calisma-zamaninda-siniflar-olusturmak\/#article","isPartOf":{"@id":"https:\/\/fatihboy.com\/xml-yardimiyla-calisma-zamaninda-siniflar-olusturmak\/"},"author":{"name":"Fatih Boy","@id":"https:\/\/fatihboy.com\/#\/schema\/person\/6b06a41d42eed36eaa0780fbeb774158"},"headline":"Xml Yard\u0131m\u0131yla \u00c7al\u0131\u015fma-Zaman\u0131nda S\u0131n\u0131flar Olu\u015fturmak","datePublished":"2011-07-30T12:22:00+00:00","mainEntityOfPage":{"@id":"https:\/\/fatihboy.com\/xml-yardimiyla-calisma-zamaninda-siniflar-olusturmak\/"},"wordCount":1350,"commentCount":1,"publisher":{"@id":"https:\/\/fatihboy.com\/#\/schema\/person\/6b06a41d42eed36eaa0780fbeb774158"},"image":{"@id":"https:\/\/fatihboy.com\/xml-yardimiyla-calisma-zamaninda-siniflar-olusturmak\/#primaryimage"},"thumbnailUrl":"https:\/\/fatihboy.com\/wp-content\/uploads\/2011\/07\/xml2Executable_thumb.png","keywords":["Attribute","C#","Xml"],"articleSection":["C#","T\u00fcrk\u00e7e"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/fatihboy.com\/xml-yardimiyla-calisma-zamaninda-siniflar-olusturmak\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/fatihboy.com\/xml-yardimiyla-calisma-zamaninda-siniflar-olusturmak\/","url":"https:\/\/fatihboy.com\/xml-yardimiyla-calisma-zamaninda-siniflar-olusturmak\/","name":"Xml Yard\u0131m\u0131yla \u00c7al\u0131\u015fma-Zaman\u0131nda S\u0131n\u0131flar Olu\u015fturmak - Fatih Boy","isPartOf":{"@id":"https:\/\/fatihboy.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/fatihboy.com\/xml-yardimiyla-calisma-zamaninda-siniflar-olusturmak\/#primaryimage"},"image":{"@id":"https:\/\/fatihboy.com\/xml-yardimiyla-calisma-zamaninda-siniflar-olusturmak\/#primaryimage"},"thumbnailUrl":"https:\/\/fatihboy.com\/wp-content\/uploads\/2011\/07\/xml2Executable_thumb.png","datePublished":"2011-07-30T12:22:00+00:00","breadcrumb":{"@id":"https:\/\/fatihboy.com\/xml-yardimiyla-calisma-zamaninda-siniflar-olusturmak\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/fatihboy.com\/xml-yardimiyla-calisma-zamaninda-siniflar-olusturmak\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/fatihboy.com\/xml-yardimiyla-calisma-zamaninda-siniflar-olusturmak\/#primaryimage","url":"https:\/\/fatihboy.com\/wp-content\/uploads\/2011\/07\/xml2Executable_thumb.png","contentUrl":"https:\/\/fatihboy.com\/wp-content\/uploads\/2011\/07\/xml2Executable_thumb.png","width":209,"height":208},{"@type":"BreadcrumbList","@id":"https:\/\/fatihboy.com\/xml-yardimiyla-calisma-zamaninda-siniflar-olusturmak\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/fatihboy.com\/"},{"@type":"ListItem","position":2,"name":"Xml Yard\u0131m\u0131yla \u00c7al\u0131\u015fma-Zaman\u0131nda S\u0131n\u0131flar Olu\u015fturmak"}]},{"@type":"WebSite","@id":"https:\/\/fatihboy.com\/#website","url":"https:\/\/fatihboy.com\/","name":"Fatih Boy","description":"Ki\u015fisel Web Sitesi","publisher":{"@id":"https:\/\/fatihboy.com\/#\/schema\/person\/6b06a41d42eed36eaa0780fbeb774158"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/fatihboy.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":["Person","Organization"],"@id":"https:\/\/fatihboy.com\/#\/schema\/person\/6b06a41d42eed36eaa0780fbeb774158","name":"Fatih Boy","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/fatihboy.com\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/5b3de123ad95a2ffe30b75a54cee98b55f65185c6d6805b35088a3d945f2feb4?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/5b3de123ad95a2ffe30b75a54cee98b55f65185c6d6805b35088a3d945f2feb4?s=96&d=mm&r=g","caption":"Fatih Boy"},"logo":{"@id":"https:\/\/fatihboy.com\/#\/schema\/person\/image\/"},"sameAs":["https:\/\/fatihboy.com"],"url":"https:\/\/fatihboy.com\/en\/author\/fatih\/"}]}},"brizy_media":[],"_links":{"self":[{"href":"https:\/\/fatihboy.com\/en\/wp-json\/wp\/v2\/posts\/9097","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/fatihboy.com\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/fatihboy.com\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/fatihboy.com\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/fatihboy.com\/en\/wp-json\/wp\/v2\/comments?post=9097"}],"version-history":[{"count":0,"href":"https:\/\/fatihboy.com\/en\/wp-json\/wp\/v2\/posts\/9097\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/fatihboy.com\/en\/wp-json\/wp\/v2\/media\/9098"}],"wp:attachment":[{"href":"https:\/\/fatihboy.com\/en\/wp-json\/wp\/v2\/media?parent=9097"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fatihboy.com\/en\/wp-json\/wp\/v2\/categories?post=9097"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fatihboy.com\/en\/wp-json\/wp\/v2\/tags?post=9097"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}