﻿
{"id":4802,"date":"2016-08-01T15:51:51","date_gmt":"2016-08-01T15:51:51","guid":{"rendered":"http:\/\/www.gencayyildiz.com\/blog\/?p=4802"},"modified":"2016-08-01T15:51:51","modified_gmt":"2016-08-01T15:51:51","slug":"cta-xmlserializer-sinifi-ile-serialization-ve-deserialization","status":"publish","type":"post","link":"https:\/\/www.gencayyildiz.com\/blog\/cta-xmlserializer-sinifi-ile-serialization-ve-deserialization\/","title":{"rendered":"C#&#8217;ta XmlSerializer S\u0131n\u0131f\u0131 \u0130le Serialization ve Deserialization"},"content":{"rendered":"<div id=\"fb-root\"><\/div>\n<p>Merhaba,<\/p>\n<p>Bu yaz\u0131m\u0131zda C#&#8217;ta XmlSerializer s\u0131n\u0131f\u0131n\u0131 ile Serialization(<em>serile\u015ftirme<\/em>) ve Deserialization(<em>seriden paralele \u00e7evirme<\/em>) i\u015flemlerini inceleyece\u011fiz. Tabi \u00f6ncelikle bu terimlerin ne oldu\u011funu, ne yap\u0131nca bu terminolojiyle nitelendirildi\u011fini a\u00e7mak laz\u0131m.<\/p>\n<p>Program ortam\u0131nda veri yap\u0131s\u0131 olarak nitelendirdi\u011fimiz herhangi bir s\u0131n\u0131f\u0131 &#8211; modeli &#8211; entityi vs. i\u00e7eri\u011fiyle birlikte xml veri yap\u0131s\u0131 haline getirme i\u015flemi Serialization olarak nitelendirilmekteyken, tam tersi \u015feklinde bir xml yap\u0131s\u0131n\u0131 herhangi bir veri yap\u0131s\u0131na d\u00f6n\u00fc\u015ft\u00fcrmeye yani ilgili xml i\u00e7erisindeki verileri kal\u0131ba kar\u015f\u0131l\u0131k gelecek bir modele aktarmayada Deserialization demekteyiz.<\/p>\n<p>\u015eimdi a\u015fa\u011f\u0131daki s\u0131n\u0131f\u0131m\u0131z\u0131 ele alal\u0131m.<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\n    class Ornek\r\n    {\r\n        public int x { get; set; }\r\n        public int y { get; set; }\r\n    }\r\n<\/pre>\n<p>Bu s\u0131n\u0131f\u0131 XmlSerializer s\u0131n\u0131f\u0131 ile xml format\u0131na modelledi\u011fimiz zaman s\u0131n\u0131f ismimiz root eleman olacak, propertylerimiz ise node elemanlar olacakt\u0131r.<\/p>\n<p>Gelin bu i\u015flemi nas\u0131l yapaca\u011f\u0131z g\u00f6relim.<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\n    public class Ornek\r\n    {\r\n        public int x { get; set; }\r\n        public int y { get; set; }\r\n        public void XMLKaydet()\r\n        {\r\n            var xml = new XmlSerializer(typeof(Ornek));\r\n            \/\/Ornek tipinde bir serile\u015ftirme yapacak nesnemizi olu\u015fturuyorum.\r\n            using (StreamWriter sw = new StreamWriter(@&quot;D:\\OrnekXML.xml&quot;))\r\n            {\r\n                xml.Serialize(sw, this);\r\n                \/\/\u015euanki mevcut nesneyi(this) sw'nin tuttu\u011fu dizine xml olarak serile\u015ftiriyoruz.\r\n            }\r\n        }\r\n    }\r\n<\/pre>\n<p>\u015eimdi Ornek s\u0131n\u0131f\u0131n\u0131 serile\u015ftirelim.<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\n    class Program\r\n    {\r\n        static void Main(string&#x5B;] args)\r\n        {\r\n            Ornek ornek = new Ornek();\r\n            ornek.x = 3;\r\n            ornek.y = 5;\r\n            ornek.XMLKaydet();\r\n        }\r\n    }\r\n<\/pre>\n<p>Evet bu i\u015flemden sonra ilgili dizinde dosyam\u0131z\u0131n olu\u015fturuldu\u011funu g\u00f6r\u00fcyor ve dosyay\u0131 a\u00e7\u0131yoruz. A\u015fa\u011f\u0131daki ekran g\u00f6r\u00fcnt\u00fcs\u00fcndeki gibi bir sonu\u00e7la kar\u015f\u0131la\u015faca\u011f\u0131z.<br \/>\n<a href=\"http:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2016\/08\/Cta-XmlSerializer-S\u0131n\u0131f\u0131-\u0130le-Serialization-ve-Deserialization.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-4804\" src=\"http:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2016\/08\/Cta-XmlSerializer-S\u0131n\u0131f\u0131-\u0130le-Serialization-ve-Deserialization.png\" alt=\"C#'ta XmlSerializer S\u0131n\u0131f\u0131 \u0130le Serialization ve Deserialization\" width=\"288\" height=\"144\" \/><\/a><br \/>\nG\u00f6rd\u00fc\u011f\u00fcn\u00fcz gibi s\u0131n\u0131f elemanlar\u0131 bu \u015fekilde serilize edilmektedir.<\/p>\n<p>E\u011fer nodelar i\u00e7erisinde child dedi\u011fimiz elemanlar\u0131da olu\u015fturmak istiyorsan\u0131z e\u011fer koleksiyon tipinden propertyler i\u015finizi g\u00f6recektir.<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\n    public class Ornek\r\n    {\r\n        public int x { get; set; }\r\n        public int y { get; set; }\r\n        public List&lt;string&gt; z { get; set; }\r\n        public void XMLKaydet()\r\n        {\r\n            var xml = new XmlSerializer(typeof(Ornek));\r\n            \/\/Ornek tipinde bir serile\u015ftirme yapacak nesnemizi olu\u015fturuyorum.\r\n            using (StreamWriter sw = new StreamWriter(@&quot;D:\\OrnekXML.xml&quot;))\r\n            {\r\n                xml.Serialize(sw, this);\r\n                \/\/\u015euanki mevcut nesneyi(this) sw'nin tuttu\u011fu dizine xml olarak serile\u015ftiriyoruz.\r\n            }\r\n        }\r\n    }\r\n<\/pre>\n<p>Dikkat ederseniz yukar\u0131daki prototipimize List&lt;string&gt; tipinde z referans ad\u0131nda bir property ekledim.<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\n    class Program\r\n    {\r\n        static void Main(string&#x5B;] args)\r\n        {\r\n            Ornek ornek = new Ornek();\r\n            ornek.x = 3;\r\n            ornek.y = 5;\r\n            ornek.z = new List&lt;string&gt; { &quot;Ornek 1&quot;, &quot;Ornek 2&quot;, &quot;Ornek 3&quot;, &quot;Ornek 4&quot;, &quot;Ornek 5&quot; };\r\n            ornek.XMLKaydet();\r\n        }\r\n    }\r\n<\/pre>\n<p>Bu \u015fekilde projeyi derleyip \u00e7al\u0131\u015ft\u0131rd\u0131\u011f\u0131n\u0131zda a\u015fa\u011f\u0131daki gibi bir sonu\u00e7la kar\u015f\u0131la\u015facaks\u0131n\u0131z.<br \/>\n<a href=\"http:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2016\/08\/Cta-XmlSerializer-S\u0131n\u0131f\u0131-\u0130le-Serialization-ve-Deserialization-1.png\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2016\/08\/Cta-XmlSerializer-S\u0131n\u0131f\u0131-\u0130le-Serialization-ve-Deserialization-1.png\" alt=\"C#&#039;ta XmlSerializer S\u0131n\u0131f\u0131 \u0130le Serialization ve Deserialization\" width=\"298\" height=\"254\" class=\"aligncenter size-full wp-image-4807\" \/><\/a><\/p>\n<p>E\u011fer ki, childlerin isimlerini belirlemek istiyorsan\u0131z tasarlad\u0131\u011f\u0131n\u0131z s\u0131n\u0131fa \u00f6zel bir koleksiyonda \u00e7al\u0131\u015fabilirsiniz.<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\n    public class Ornek2\r\n    {\r\n        public string a { get; set; }\r\n        public string b { get; set; }\r\n    }\r\n    public class Ornek\r\n    {\r\n        public int x { get; set; }\r\n        public int y { get; set; }\r\n        public List&lt;Ornek2&gt; z { get; set; }\r\n        public void XMLKaydet()\r\n        {\r\n            var xml = new XmlSerializer(typeof(Ornek));\r\n            \/\/Ornek tipinde bir serile\u015ftirme yapacak nesnemizi olu\u015fturuyorum.\r\n            using (StreamWriter sw = new StreamWriter(@&quot;D:\\OrnekXML.xml&quot;))\r\n            {\r\n                xml.Serialize(sw, this);\r\n                \/\/\u015euanki mevcut nesneyi(this) sw'nin tuttu\u011fu dizine xml olarak serile\u015ftiriyoruz.\r\n            }\r\n        }\r\n    }\r\n<\/pre>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\n    class Program\r\n    {\r\n        static void Main(string&#x5B;] args)\r\n        {\r\n            Ornek ornek = new Ornek();\r\n            ornek.x = 3;\r\n            ornek.y = 5;\r\n            ornek.z = new List&lt;Ornek2&gt; {\r\n                new Ornek2 { a = &quot;1a&quot;, b = &quot;1b&quot; },\r\n                new Ornek2 { a = &quot;2a&quot;, b = &quot;2b&quot; },\r\n                new Ornek2 { a = &quot;3a&quot;, b = &quot;3b&quot; },\r\n                new Ornek2 { a = &quot;4a&quot;, b = &quot;4b&quot; },\r\n                new Ornek2 { a = &quot;5a&quot;, b = &quot;5b&quot; }\r\n            };\r\n            ornek.XMLKaydet();\r\n        }\r\n    }\r\n<\/pre>\n<p>\u0130\u015fte bu \u015fekilde \u00e7al\u0131\u015ft\u0131\u011f\u0131m\u0131z zamanda elde etti\u011fimiz \u00e7\u0131kt\u0131 a\u015fa\u011f\u0131daki gibi olacakt\u0131r.<br \/>\n<a href=\"http:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2016\/08\/Cta-XmlSerializer-S\u0131n\u0131f\u0131-\u0130le-Serialization-ve-Deserialization-2.png\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2016\/08\/Cta-XmlSerializer-S\u0131n\u0131f\u0131-\u0130le-Serialization-ve-Deserialization-2-188x300.png\" alt=\"C#&#039;ta XmlSerializer S\u0131n\u0131f\u0131 \u0130le Serialization ve Deserialization\" width=\"188\" height=\"300\" class=\"aligncenter size-medium wp-image-4811\" srcset=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2016\/08\/Cta-XmlSerializer-S\u0131n\u0131f\u0131-\u0130le-Serialization-ve-Deserialization-2-188x300.png 188w, https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2016\/08\/Cta-XmlSerializer-S\u0131n\u0131f\u0131-\u0130le-Serialization-ve-Deserialization-2.png 301w\" sizes=\"auto, (max-width: 188px) 100vw, 188px\" \/><\/a><\/p>\n<p>\u015euana kadar Serialization i\u015flemini ger\u00e7ekle\u015ftirdik. \u015eimdide elimizdeki xml dosyas\u0131n\u0131 Deserialization&#8217;a i\u015flemine tabi tutarak mevcut veri yap\u0131m\u0131zda elde edelim.<\/p>\n<p>Ornek s\u0131n\u0131f\u0131 i\u00e7erisinde a\u015fa\u011f\u0131daki metodu olu\u015ftural\u0131m.<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\n        public void XMLYukle()\r\n        {\r\n            var xml = new XmlSerializer(typeof(Ornek));\r\n            \/\/Ornek tipinde bir deserialization yapacak nesnemizi olu\u015fturuyorum.\r\n            using (StreamReader sr = new StreamReader(@&quot;D:\\OrnekXML.xml&quot;))\r\n            {\r\n                Ornek o = (Ornek)xml.Deserialize(sr);\r\n                \/\/Verilen dizindeki xml deserialization yap\u0131larak nihayetinde Ornek tipinde elde edilecektir.\r\n                \/\/object olarak gelen nesneyi biz Ornek tipine cast ediyoruz.\r\n                this.x = o.x;\r\n                this.y = o.y;\r\n                this.z = o.z;\r\n                \/\/Gelen nesnenin verilerini \u015fuandaki mevcut nesnenin veri alanlar\u0131na atamaktay\u0131z.\r\n            }\r\n        }\r\n<\/pre>\n<p>Bu i\u015flemden sonra Ornek s\u0131n\u0131f\u0131m\u0131z\u0131 \u00f6nce serile\u015ftirelim ard\u0131ndan tekrardan paralelle\u015ftirelim.<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\n    class Program\r\n    {\r\n        static void Main(string&#x5B;] args)\r\n        {\r\n            #region Serialize\r\n            Ornek ornek = new Ornek();\r\n            ornek.x = 3;\r\n            ornek.y = 5;\r\n            ornek.z = new List&lt;Ornek2&gt; {\r\n                new Ornek2 { a = &quot;1a&quot;, b = &quot;1b&quot; },\r\n                new Ornek2 { a = &quot;2a&quot;, b = &quot;2b&quot; },\r\n                new Ornek2 { a = &quot;3a&quot;, b = &quot;3b&quot; },\r\n                new Ornek2 { a = &quot;4a&quot;, b = &quot;4b&quot; },\r\n                new Ornek2 { a = &quot;5a&quot;, b = &quot;5b&quot; }\r\n            };\r\n            ornek.XMLKaydet();\r\n            #endregion\r\n\r\n            #region Deserialize\r\n            Ornek ornek2 = new Ornek();\r\n            ornek2.XMLYukle();\r\n            Console.WriteLine(ornek2.x + &quot; &quot; + ornek2.y);\r\n            ornek.z.ForEach(x =&gt; Console.WriteLine(&quot;Liste : &quot; + x.a + &quot; &quot; + x.b));\r\n            #endregion\r\n            Console.Read();\r\n        }\r\n    }\r\n<\/pre>\n<p><a href=\"http:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2016\/08\/Cta-XmlSerializer-S\u0131n\u0131f\u0131-\u0130le-Serialization-ve-Deserialization-3.png\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2016\/08\/Cta-XmlSerializer-S\u0131n\u0131f\u0131-\u0130le-Serialization-ve-Deserialization-3.png\" alt=\"C#&#039;ta XmlSerializer S\u0131n\u0131f\u0131 \u0130le Serialization ve Deserialization\" width=\"167\" height=\"141\" class=\"aligncenter size-full wp-image-4813\" \/><\/a><br \/>\nG\u00f6rd\u00fc\u011f\u00fcn\u00fcz gibi ornek2 referans\u0131 \u00fczerinden xml dosyam\u0131zdaki verilerin \u00e7\u0131kt\u0131s\u0131n\u0131 alabilmekteyiz.<\/p>\n<p>Bir sonraki yaz\u0131m\u0131zda XmlSerializer s\u0131n\u0131f\u0131 ile Generic bir \u015fekilde Serialization ve Deserialization i\u015flemlerini ger\u00e7ekle\u015ftirece\u011fimiz tasar\u0131 \u00fczerine konu\u015faca\u011f\u0131z. <\/p>\n<p>\u015eimdilik g\u00f6r\u00fc\u015fmek \u00fczere&#8230;<br \/>\n\u0130yi \u00e7al\u0131\u015fmalar&#8230;<\/p>\n<!-- AddThis Advanced Settings generic via filter on the_content --><!-- AddThis Share Buttons generic via filter on the_content -->","protected":false},"excerpt":{"rendered":"<p>Merhaba, Bu yaz\u0131m\u0131zda C#&#8217;ta XmlSerializer s\u0131n\u0131f\u0131n\u0131 ile Serialization(serile\u015ftirme) ve Deserialization(seriden paralele \u00e7evirme) i\u015flemlerini inceleyece\u011fiz. Tabi \u00f6ncelikle bu terimlerin ne oldu\u011funu, ne yap\u0131nca bu terminolojiyle nitelendirildi\u011fini a\u00e7mak laz\u0131m. Program ortam\u0131nda veri yap\u0131s\u0131 olarak nitelendirdi\u011fimiz herhangi&#46;&#46;&#46;<!-- AddThis Advanced Settings generic via filter on get_the_excerpt --><!-- AddThis Share Buttons generic via filter on get_the_excerpt --><\/p>\n","protected":false},"author":1,"featured_media":3223,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[12,234],"tags":[1398,27,1395,1400,1397,1399,752,1396],"class_list":["post-4802","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-c-sharp-c","category-xml","tag-c-sarp","tag-c","tag-deserialization","tag-deserialize","tag-serialization","tag-serialize","tag-xml","tag-xmlserializer"],"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/posts\/4802","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/comments?post=4802"}],"version-history":[{"count":0,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/posts\/4802\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/media\/3223"}],"wp:attachment":[{"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/media?parent=4802"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/categories?post=4802"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/tags?post=4802"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}