{"id":2248,"date":"2009-11-29T18:11:46","date_gmt":"2009-11-29T18:11:46","guid":{"rendered":"http:\/\/192.168.0.71:9090\/?p=1952"},"modified":"2009-11-29T18:11:46","modified_gmt":"2009-11-29T18:11:46","slug":"netc-serialization-deserialization","status":"publish","type":"post","link":"https:\/\/talsu.net\/?p=2248","title":{"rendered":".NET(C#) Serialization , Deserialization"},"content":{"rendered":"<p>serialization \uc774\ub780 \uac1c\uccb4\ub97c \uc800\uc7a5\ud558\uac70\ub098 \uc804\uc1a1\ud560 \uc218 \uc788\ub294 \ud615\ud0dc\ub85c \uac1c\uccb4\uc758 \uc0c1\ud0dc\ub97c \ubcc0\ud658\ud558\ub294 \ud504\ub85c\uc138\uc2a4 \uc774\ub2e4. \uadf8\ub9ac\uace0serialization\uacfc \ubc18\ub300\ub85c \ub2e4\uc2dc \uac1c\uccb4\ub85c \ubcc0\ud658\ud558\ub294 \uac83\uc744 deserialization\uc774\ub77c \ud55c\ub2e4.<br \/>\n<br \/>\nserialization\uc744 \uc0ac\uc6a9\ud558\ub294 \uac00\uc7a5 \ud070 \uc774\uc720\ub294 \uac1c\uccb4\uc758 \uc0c1\ud0dc\ub97c \uc800\uc7a5\uc18c\uc5d0 \ubcf4\uc874 \ud588\ub2e4\uac00 \ub098\uc911\uc5d0 \ub611\uac19\uc740 \ubcf5\uc0ac\ubcf8\uc744 \ub2e4\uc2dc \ub9cc\ub4e4\uac70\ub098 \ud55c \uc751\uc6a9\ud504\ub85c\uadf8\ub7a8 \uc5d0\uc11c \ub2e4\ub978 \uc751\uc6a9\ud504\ub85c\uadf8\ub7a8\uc73c\ub85c \uac1c\uccb4\ub97c \uc804\uc1a1\ud558\uae30 \uc704\ud574\uc11c \uc774\ub2e4.<br \/>\n<br \/>\n.NET Framework\uc5d0\uc11c\ub294 \uc81c\uacf5\ud558\ub294 serialize \ubc29\uc2dd\uc740 \ud06c\uac8c 2\uac00\uc9c0\ub85c \ub098\ub20c \uc218 \uc788\ub2e4.<br \/>\n<br \/>\n<strong>\uc774\uc9c4 serialization : <\/strong>\ud615\uc2dd \uc815\ud655\ub3c4\ub97c \uc720\uc9c0 \ud558\ubbc0\ub85c \uc751\uc6a9 \ud504\ub85c\uadf8\ub7a8\uc758 \uc5ec\ub7ec \ud638\ucd9c\uac04\uc5d0 \uac1c\uccb4 \uc0c1\ud0dc\ub97c \uc720\uc9c0 \ud558\ub294\ub370 \uc720\uc6a9\ud558\ub2e4. \uac1c\uccb4\ub97c \uc2a4\ud2b8\ub9bc, \ub514\uc2a4\ud06c, \uba54\ubaa8\ub9ac, \ub124\ud2b8\uc6cc\ud06c \ub4f1\uc73c\ub85c serialize\ud560 \uc218 \uc788\ub2e4.<\/p>\n<p><strong>XML serialization : <\/strong>public \uc18d\uc131\uacfc \ud544\ub4dc\ub9cc serialize\ud558\uba70 \ud615\uc2dd \uc815\ud655\ub3c4\ub97c \uc720\uc9c0\ud558\uc9c0 \uc54a\ub294\ub2e4. \ub370\uc774\ud130\ub97c \uc0ac\uc6a9\ud558\ub294 \uc751\uc6a9\ud504\ub85c\uadf8\ub7a8\uc744 \uc81c\ud55c\ud558\uc9c0 \uc54a\uace0 \ub370\uc774\ud130\ub97c \uc81c\uacf5\ud558\uac70\ub098 \uc0ac\uc6a9\ud558\ub824\uace0 \ud560 \ub54c \uc720\uc6a9\ud558\ub2e4. XML\uc740 \uacf5\uac1c \ud45c\uc900\uc774\uae30 \ub54c\ubb38\uc5d0 \uc6f9\uc744 \ud1b5\ud574 \uc815\ubcf4\ub97c \uacf5\uc720\ud560 \ub54c \uc801\ud569\ud558\uace0 SOAP\ub3c4 \ub9c8\ucc2c\uac00\uc9c0\ub85c \uacf5\uac1c \ud45c\uc900\uc774\ub2e4.<br \/>\n<br \/>\n\ud615\uc2dd \uc815\ud655\ub3c4\ub97c \uc720\uc9c0\ud55c\ub2e4\ub294 \ub9d0\uc740 \uac1c\uccb4\ub97c serialize\uc744 \ud558\uace0 \ub2e4\uc2dc deserialize\ud588\uc744 \ub54c \uc6d0\ubcf8\uc758 \uac1c\uccb4\uc758 \uc815\ud655\ud55c \ubcf5\uc81c\ubcf8\uc774 \ub9cc\ub4e4\uc5b4 \uc9c4\ub2e4\ub294 \uac83\uc744 \uc758\ubbf8\ud55c\ub2e4.<br \/>\n<\/p>\n<h2>\uc774\uc9c4 serialization<\/h2>\n<p>\nserialize\ud558\uace0\uc790 \ud558\ub294 \uac1c\uccb4\uc758 public, private\ud544\ub4dc \uc640 \ud074\ub798\uc2a4 \uc774\ub984\uc744 \ubaa8\ub450 \ubc14\uc774\ud2b8\uc758 \uc2a4\ud2b8\ub9bc (Binary)\ub85c \ubcc0\ud658\ud558\ub294 \ubc29\uc2dd\uc774\ub2e4. \uadf8 \ud6c4 \uac1c\uccb4\uac00 deserialize\ub418\uba74 \uc6d0\ubcf8 \uac1c\uccb4\uc758 \uc815\ud655\ud55c \ubcf5\uc81c\ubcf8\uc774 \ub9cc\ub4e4\uc5b4\uc9c4\ub2e4.<br \/>\n<br \/>\n\uc774\uc9c4 serialization\uc5d0\ub294 3\uac00\uc9c0 \ubc29\ubc95\uc774 \uc788\ub2e4.<br \/>\n<\/p>\n<h3>\uae30\ubcf8 serialization<\/h3>\n<p>\nserialize\ud558\uace0\uc790 \ud558\ub294 class\ub97c Serializable\ud2b9\uc131\uc73c\ub85c \ud45c\uc2dc \ud558\ub294 \uac83\uc73c\ub85c \ud574\ub2f9 \ud074\ub798\uc2a4\uc758 \ubaa8\ub4e0 \ubd80\ubd84\uc744 serialize\ud55c\ub2e4.<br \/>\n<\/p>\n<pre class=\"lang:c# decode:true\">\n\n[Serializable]\npublic class MyObject\n\n{\n\n    public int n1 = 0;\n\n    public int n2 = 0;\n\n    public String str = null;\n\n}\n<\/pre>\n<p>MyObject\ub77c\ub294 class\ub97c Serializable \ud2b9\uc131\uc73c\ub85c \ud45c\uc2dc\ud558\uc600\ub2e4.<br \/>\n<br \/>\nMyObject\uc758 \uac1d\uccb4\ub97c serialize \ud558\uc5ec \ud30c\uc77c\ub85c \uc800\uc7a5\ud558\ub294 \uc608<\/p>\n<pre class=\"lang:c# decode:true\">\nMyObject obj = new MyObject();\n\nobj.n1 = 1;\n\nobj.n2 = 24;\n\nobj.str = \"Some String\";\n\nIFormatter formatter = new BinaryFormatter();\n\nStream stream = new FileStream(\"MyFile.bin\", FileMode.Create, FileAccess.Write, FileShare.None);\n\nformatter.Serialize(stream, obj);\n\nstream.Close();\n<\/pre>\n<p>\uc21c\uc11c\ub97c \uc694\uc57d\ud574\ubcf4\uba74<br \/>\n<br \/>\n1.      \uc778\uc2a4\ud134\uc2a4 \uc0dd\uc131.<\/p>\n<p>2.      BinaryFormatter\ub97c \ub9cc\ub4e0\ub2e4.<\/p>\n<p>3.      \ud30c\uc77c\ub85c \uc800\uc7a5\ud558\uae30 \uc704\ud55c FileStream\uc744 \ub9cc\ub4e0\ub2e4.<\/p>\n<p>4.      Formatter\uc5d0\uac8c stream\uacfc \uac1c\uccb4\ub97c \ub9e4\uac1c \ubcc0\uc218\ub85c \uc81c\uacf5\ud558\uace0 serialize\ub97c \uc9c0\uc2dc\ud55c\ub2e4.<\/p>\n<p>5.      stream\uc744 \ub2eb\ub294\ub2e4.<br \/>\n<\/p>\n<p>\uc774\ubc88\uc5d0\ub294 \ubc18\ub300\ub85c serialize\ub41c \uac1c\uccb4\ub97c \ubc18\ub300\ub85c deserialize\ub85c \ubcf5\uc6d0 \ud558\ub294 \uc608<\/p>\n<pre class=\"lang:c# decode:true\">\nIFormatter formatter = new BinaryFormatter();\n\nStream stream = new FileStream(\"MyFile.bin\", FileMode.Open, FileAccess.Read, FileShare.Read);\n\nMyObject obj = (MyObject)formatter.Deserialize(stream);\n\nstream.Close();\n<\/pre>\n<p>1.      BinaryFormatter\ub97c \ub9cc\ub4e0\ub2e4.<\/p>\n<p>2.      \uc800\uc7a5\ub41c \ud30c\uc77c\uc744 stream\uc73c\ub85c \uc624\ud508\ud55c\ub2e4.<\/p>\n<p>3.      Formatter\uc5d0\uac8c stream\uc744 \uc81c\uacf5\ud558\uace0 Deserialize\ub97c \uc9c0\uc2dc\ud558\uace0 \uac1c\uccb4\ub97c \ubc1b\ub294\ub2e4.<br \/>\n<\/p>\n<h3>\uc120\ud0dd\uc801 serialization<\/h3>\n<p>class\uc5d0\uc11c serialize\ud558\uc9c0 \uc54a\uc544\uc57c \ud558\ub294 \ud544\ub4dc\uac00 \uc788\uc744 \ub54c \ud574\ub2f9 \uba64\ubc84\ubcc0\uc218\ub97c NonSerialized\ud2b9\uc131\uc73c\ub85c \ud45c\uc2dc\ud574 \uc90c\uc73c\ub85c\uc368 \ud574\ub2f9 \ubcc0\uc218\uac00 Serialize\ub418\ub294 \uac83\uc744 \ubc29\uc9c0\ud560 \uc218 \uc788\ub2e4.<\/p>\n<pre class=\"lang:c# decode:true\">\n[Serializable]\npublic class MyObject\n{\n\tpublic int n1 = 0;\n\n\t[NonSerialized]\n\n\tpublic int n2 = 0;\n\n\tpublic String str = null;\n}\n<\/pre>\n<p>MyObject\ud074\ub798\uc2a4\uc758 n2 \uba64\ubc84\ub294 \ub354 \uc774\uc0c1 serialize\ub418\uc9c0 \uc54a\ub294\ub2e4.<\/p>\n<p>NonSerialized \ud2b9\uc131\uc744 \uc801\uc6a9\ud588\uc744 \ub54c\uc640 \uc801\uc6a9\ud558\uc9c0 \uc54a\uc558\uc744 \ub54c \uac01\uac01 serialize, deserialize\ud558\uc5ec \ube44\uad50\ud574\ubcf4\uba74 n2\uba64\ubc84\uc758 \uac12\uc774 \ub2e4\ub984\uc744 \ud655\uc778\ud574 \ubcfc \uc218 \uc788\ub2e4.<\/p>\n<p>\uacb0\uad6d NonSerialized\ub85c \ud45c\uc2dc\ub418\uc9c0 \uc54a\uc740 \ubaa8\ub4e0 \ud544\ub4dc\ub294 serialize\ub41c\ub2e4.<\/p>\n<h3>Custom serialization<\/h3>\n<p>Custom serialization\uc740 serialization\uc744 \uc9c1\uc811 \uc81c\uc5b4\ud558\ub294 \ubc29\uc2dd\uc774\ub2e4. Custom serialization\uc5d0\ub294 2\uac00\uc9c0 \ubc29\ubc95\uc774 \uc788\ub294\ub370<\/p>\n<p>\uccab\ubc88\uc9f8\ub85c\ub294 serialization \ub3c4\uc911\uacfc \uc774\ud6c4\uc5d0 \ub370\uc774\ud130\ub97c \uc218\uc815\ud558\ub294\ub370 \uc0ac\uc6a9\ub418\ub294 \uba54\uc11c\ub4dc\uc5d0 \ub2e4\uc74c \ud2b9\uc131\uc744 \uc801\uc6a9\ud55c\ub2e4.<\/p>\n<p><strong><br \/>\nOnDeserializedAttribute<\/p>\n<p>OnDeserializingAttribute<\/p>\n<p>OnSerializedAttribute<\/p>\n<p>OnSerializingAttribute<br \/>\n<\/strong><\/p>\n<pre class=\"lang:c# decode:true\">\n\/\/ This is the object that will be serialized and deserialized.\n[Serializable()]\npublic class TestSimpleObject\n{\n\t\/\/ This member is serialized and deserialized with no change.\n\tpublic int member1;\n\n\t\/\/ The value of this field is set and reset during and\n\t\/\/ after serialization.\n\tprivate string member2;\n\n\t\/\/ This field is not serialized. The OnDeserializedAttribute\n\t\/\/ is used to set the member value after serialization.\n\t[NonSerialized()]\n\tpublic string member3;\n\n\t\/\/ This field is set to null, but populated after deserialization.\n\tprivate string member4;\n\n\t\/\/ Constructor for the class.\n\tpublic TestSimpleObject()\n\t{\n\t\tmember1 = 11;\n\t\tmember2 = \"Hello World!\";\n\t\tmember3 = \"This is a nonserialized value\";\n\t\tmember4 = null;\n\t}\n\n\tpublic void Print()\n\t{\n\t\tConsole.WriteLine(\"member1 = \u2018{0}\u2019\", member1);\n\t\tConsole.WriteLine(\"member2 = \u2018{0}\u2019\", member2);\n\t\tConsole.WriteLine(\"member3 = \u2018{0}\u2019\", member3);\n\t\tConsole.WriteLine(\"member4 = \u2018{0}\u2019\", member4);\n\t}\n\n\t[OnSerializing()]\n\tinternal void OnSerializingMethod(StreamingContext context)\n\t{\n\t\tmember2 = \"This value went into the data file during serialization.\";\n\t}\n\n\t[OnSerialized()]\n\tinternal void OnSerializedMethod(StreamingContext context)\n\t{\n\t\tmember2 = \"This value was reset after serialization.\";\n\t}\n\n\t[OnDeserializing()]\n\tinternal void OnDeserializingMethod(StreamingContext context)\n\t{\n\t\tmember3 = \"This value was set during deserialization\";\n\t}\n\n\t[OnDeserialized()]\n\tinternal void OnDeserializedMethod(StreamingContext context)\n\t{\n\t\tmember4 = \"This value was set after deserialization.\";\n\t}\n}\n<\/pre>\n<p>\uac01 \ud2b9\uc131\uc744 \uc801\uc6a9\ud55c \uba54\uc11c\ub4dc\uc5d0 \uc6d0\ud558\ub294 \ub3d9\uc791\uc744 \uad6c\ud604\ud558\uba74 \ub41c\ub2e4.<br \/>\n<br \/>\n\ub450\ubc88\uc9f8\ub85c\ub294 \ud574\ub2f9 \uac1c\uccb4\uc5d0 ISerializable\uc778\ud130\ud398\uc774\uc2a4\ub97c \uad6c\ud604\ud558\uba74 \ub41c\ub2e4.<br \/>\n<br \/>\nISerializable\uc778\ud130\ud398\uc774\uc2a4 \uad6c\ud604\uc5d0\ub294 \uac1c\uccb4\uac00 deserialize\ub420 \ub54c \uc0ac\uc6a9\ub418\ub294 \ud2b9\ubcc4\ud55c \uc0dd\uc131\uc790 \ubc0f GetObjectData \uba54\uc11c\ub4dc\uac00 \ud3ec\ud568\ub418\uc5b4 \uc788\ub2e4.<br \/>\n<\/p>\n<pre class=\"lang:c# decode:true\">\n[Serializable]\npublic class MyObject : ISerializable\n{\n\tpublic int n1;\n\tpublic int n2;\n\tpublic String str;\n\n\tpublic MyObject()\n\t{\n\t}\n\n\tprotected MyObject(SerializationInfo info, StreamingContext context)\n\t{\n\t\tn1 = info.GetInt32(\"i\");\n\t\tn2 = info.GetInt32(\"j\");\n\t\tstr = info.GetString(\"k\");\n\t}\n\t[SecurityPermissionAttribute(SecurityAction.Demand,\n\tSerializationFormatter = true)]\n\n\tpublic virtual void GetObjectData(SerializationInfo info, StreamingContext context)\n\t{\n\t\tinfo.AddValue(\"i\", n1);\n\t\tinfo.AddValue(\"j\", n2);\n\t\tinfo.AddValue(\"k\", str);\n\t}\n}\n<\/pre>\n<p>serialization\uc2dc\uc5d0\ub294 \uad6c\ud604\ub41c GetObjectData\uba54\uc11c\ub4dc\uac00 \ud638\ucd9c \ub418\ub294\ub370 \uc774\ub294 SerializationInfo\ub97c \uc9c1\uc811 \ucc44\uc6cc\uc57c \ud55c\ub2e4. \uc774\ub984 \ubc0f \uac12 \uc30d\uc73c\ub85c serialize\ub420 \ubcc0\uc218\ub97c \ucd94\uac00\ud558\uba70 \ubaa8\ub4e0 \ud14d\uc2a4\ud2b8\ub97c \uc774\ub984\uc73c\ub85c \uc0ac\uc6a9\ud560 \uc218 \uc788\ub2e4. SerializationInfo\uc5d0 \ucd94\uac00\ub418\ub294 \uba64\ubc84 \ubcc0\uc218\ub97c \uc790\uc720\ub86d\uac8c \uacb0\uc815\ud560 \uc218 \uc788\ub2e4.<br \/>\n<br \/>\ndserialization\uc2dc\uc5d0\ub294 \uc9c1\uc811 SerializationInfo \uc640 StreamingContext\ub97c \ubc1b\ub294 \ud2b9\uc218 \uc0dd\uc131\uc790\ub97c \ub9cc\ub4e4\uc5b4\uc57c\ud55c\ub2e4. \uc774\uac83\uc774 \ub204\ub77d \ub41c \uc0c1\ud0dc\uc5d0\uc11c deserialize\ud558\ub824\uace0 \ud558\uba74 \uc608\uc678\ub97c trow\ud55c\ub2e4.<br \/>\n<\/p>\n<h2>XML \ubc0f SOAP Serialization<\/h2>\n<p>XML serialization\uc740 \uac1c\uccb4\uc758 public \ud544\ub4dc\uc640 \uc18d\uc131 \ub610\ub294 \uba54\uc11c\ub4dc\uc758 \ub9e4\uac1c\ubcc0\uc218\uc640 \ubc18\ud658 \uac12\uc744 XML\uc2a4\ud2b8\ub9bc\uc73c\ub85c serialize\ud55c\ub2e4. XML serialization\uc744 \uc0ac\uc6a9\ud558\uba74 \uc800\uc7a5\uc774\ub098 \uc804\uc1a1\uc744 \uc704\ud574 \uc9c1\ub82c\ud615\uc2dd\uc73c\ub85c \ubcc0\ud658\ub418\ub294 public \uc18d\uc131 \ubc0f \ud544\ub4dc\uac00 \uc788\ub294 \uac15\ub825\ud55c \ud615\uc2dd\uc758 \ud074\ub798\uc2a4\uac00 \ub9cc\ub4e4\uc5b4 \uc9c4\ub2e4.<br \/>\n<br \/>\nXML serialization\uc758 \ud2b9\uc9d5<br \/>\n<br \/>\n<strong>XML\uc740 \uacf5\uac1c \ud45c\uc900\uc774\uae30 \ub54c\ubb38\uc5d0 XML \uc2a4\ud2b8\ub9bc\uc740 \ud50c\ub7ab\ud3fc\uc5d0 \uad00\uacc4\uc5c6\uc774 \ud544\uc694\uc5d0 \ub530\ub77c \ubaa8\ub4e0 \uc751\uc6a9 \ud504\ub85c\uadf8\ub7a8\uc5d0\uc11c \ucc98\ub9ac\ub420 \uc218 \uc788\ub2e4.<br \/>\n<br \/>\nXML serialization\uc740 SOAP \uc0ac\uc591\uacfc \uc77c\uce58\ud558\ub294 XML \uc2a4\ud2b8\ub9bc\uc73c\ub85c \uac1c\uccb4\ub97c serialize \ud558\ub294 \ub370 \uc0ac\uc6a9\ud560 \uc218\ub3c4 \uc788\ub2e4.<br \/>\n<br \/>\n\uac1c\uccb4\ub97c serialize\ud558\uac70\ub098 deserialize\ud558\uae30 \uc704\ud574\uc11c\ub294 XmlSerializer\ud074\ub798\uc2a4\ub97c \uc0ac\uc6a9\ud55c\ub2e4.<br \/>\n<br \/>\nserialize\ub41c \ub370\uc774\ud130\uc5d0\ub294 \ub370\uc774\ud130 \uc790\uccb4\uc640 \ud074\ub798\uc2a4\uc758 \uad6c\uc870\ub9cc \ud3ec\ud568\ub41c\ub2e4.<br \/>\n<br \/>\npublic \uc18d\uc131 \ubc0f \ud544\ub4dc\ub9cc serialize\ub420 \uc218 \uc788\ub2e4. \uc18d\uc131\uc5d0\ub294 public \uc811\uadfc\uc790(get, set)\uac00 \uc788\uc5b4\uc57c \ud55c\ub2e4. public\uc774 \uc544\ub2cc \ub370\uc774\ud130\ub97c serialize\ud574\uc57c \ud558\ub294 \uacbd\uc6b0 \uc774\uc9c4 serialization\uc744 \uc0ac\uc6a9\ud55c\ub2e4.<br \/>\n<br \/>\nclass\uc5d0\ub294 XmlSerializer\uc5d0 \uc758\ud574 serialize\ub420 \uae30\ubcf8 \uc0dd\uc131\uc790\uac00 \uc788\uc5b4\uc57c \ud55c\ub2e4.<br \/>\n<br \/>\n\uba54\uc11c\ub4dc\ub294 serialize\ub420 \uc218 \uc5c6\ub2e4.<br \/>\n<br \/>\n<\/strong><\/p>\n<h3>\uac1c\uccb4 XML serialize<\/h3>\n<p>\ub2e4\uc74c\uc740 \uac1c\uccb4\ub97c XmlSerializer\ub97c \uc774\uc6a9\ud558\uc5ec serialize\ud55c\ub2e4.<\/p>\n<pre class=\"lang:c# decode:true\">\npublic class MyObject\n{\n\tpublic int n1 = 0;\n\tpublic int n2 = 0;\n\tprivate int n3 = 0;\n\tpublic String str = null;\n\n\tpublic MyObject()\n\t{\n\t\tn1 = 1;\n\t\tn2 = 2;\n\t\tn3 = 3;\n\t\tstr = \"Xml Serialization\";\n\t}\n}\n\nclass Program\n{\n\tstatic void Main(string[] args)\n\t{\n\t\tMyObject myObject = new MyObject();\n\t\tXmlSerializer xmlSerializer = new XmlSerializer(typeof(MyObject));\n\t\tStreamWriter writer = new StreamWriter(\"myObject.xml\");\n\t\txmlSerializer.Serialize(writer, myObject);\n\t\twriter.Close();\n\t}\n}\n<\/pre>\n<p>1.      serialize\ud558\uace0\uc790 \ud558\ub294 \uc778\uc2a4\ud134\uc2a4 \uc0dd\uc131<\/p>\n<p>2.      XmlSerializer\ub97c \uc0dd\uc131\uc790\uc5d0 serialize\ud558\uace0\uc790 \ud558\ub294 \uc778\uc2a4\ud134\uc2a4\uc758 \ud0c0\uc785\uc744 \uc804\ub2ec\ud558\uc5ec \uc0dd\uc131<\/p>\n<p>3.      \uae30\ub85d\ud560 stream\uc0dd\uc131<\/p>\n<p>4.      XmlSerializer\uc5d0\uac8c stream\uacfc \uac1c\uccb4\ub97c \uc804\ub2ec\ud558\uc5ec serialize\uc9c0\uc2dc<br \/>\n<br \/>\n\uc704\uc758 \uacb0\uacfc \ubb3c\uc778 myObject.xml\uc5d0\ub294 \ub2e4\uc74c\uacfc \uac19\uc740 \ub0b4\uc6a9\uc774 \uc788\ub2e4.<\/p>\n<pre class=\"lang:xhtml decode:true\">\n<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<myObject xmlns:xsi=\"http:\/\/www.w3.org\/2001\/XMLSchema-instance\"xmlns:xsd=\"http:\/\/www.w3.org\/2001\/XMLSchema\">\n  <n1>1<\/n1>\n  <n2>2<\/n2>\n  <str>Xml Serialization<\/str>\n<\/myObject>\n<\/pre>\n<p>private \uba64\ubc84\uc640 \uba54\uc11c\ub4dc\uc758 \uc815\ubcf4\ub294 \uae30\ub85d \ub418\uc9c0 \uc54a\ub294 \uac83\uc744 \ud655\uc778\ud560 \uc218 \uc788\ub2e4.<br \/>\n<\/p>\n<h3>\uac1c\uccb4 XML deserialize<\/h3>\n<p>\uc774\ubc88\uc5d0\ub294 myObject.xml\uc744 \ub2e4\uc2dc deserialize\ud574\ubcf8\ub2e4.<\/p>\n<pre class=\"lang:c# decode:true\">\n\nclass Program\n{\n\tstatic void Main(string[] args)\n\t{\n\t\tXmlSerializer xmlSerializer = new XmlSerializer(typeof(MyObject));\n\t\tStreamReader reader = new StreamReader(\"myObject.xml\");\n\t\tMyObject myObject = (MyObject) xmlSerializer.Deserialize(reader);\n\n\t\tConsole.WriteLine(myObject.n1);\n\t\tConsole.WriteLine(myObject.n2);\n\t\tConsole.WriteLine(myObject.str);\n\t}\n}\n<\/pre>\n<p>1.      XmlSerializer\ub97c \uc0dd\uc131\uc790\uc5d0 deserialize\ud558\uace0\uc790 \ud558\ub294 \uc778\uc2a4\ud134\uc2a4\uc758 \ud0c0\uc785\uc744 \uc804\ub2ec \ud558\uc5ec \uc0dd\uc131<\/p>\n<p>2.      stream\uc744 \uc77d\uc5b4 \ub4e4\uc774\ub294 reader \uc0dd\uc131<\/p>\n<p>3.      XmlSerializer\uc5d0\uac8c stream\uc744 \uc804\ub2ec\ud558\uc5ec deserialize\ub97c \uc9c0\uc2dc\ud558\uace0 \ub9ac\ud134\ub418\ub294 Object\ub97c \ubcf5\uc6d0\ud558\uace0\uc790 \ud558\ub294 \ud0c0\uc785\uc5d0 \ub9de\uac8c \uce90\uc2a4\ud305 \ud558\uc5ec \ubc1b\uc544 \ub0b8\ub2e4.<br \/>\n<\/p>\n<h3>\uac1c\uccb4\ub97c SOAP \uc778\ucf54\ub529\ub41c XML \uc2a4\ud2b8\ub9bc\uc73c\ub85c Serialize\ud558\uae30<\/h3>\n<p>SOAP \uba54\uc2dc\uc9c0\ub294 XML\uc744 \uc0ac\uc6a9\ud558\uc5ec \uc0dd\uc131\ub418\ubbc0\ub85c XmlSerializer\ub97c \uc0ac\uc6a9\ud558\uc5ec \ud074\ub798\uc2a4\ub97c serialize\ud558\uace0 \uc778\ucf54\ub529\ub41c SOAP \uba54\uc2dc\uc9c0\ub97c \uc0dd\uc131\ud560 \uc218 \uc788\ub2e4.<br \/>\n<br \/>\nSOAP \uc778\ucf54\ub529\ub41c XML serialize\ud558\uae30 \uc704\ud574\uc11c\ub294 \uae30\uc874\uc758 XML serialize\uc5d0\uc11c XmlSerializer\uc0dd\uc131\uc790 \ub9e4\uac1c \ubcc0\uc218\uc5d0 serialize\ud558\uace0\uc790 \ud558\ub294 \uc778\uc2a4\ud134\uc2a4\uc758 \ud0c0\uc785\uc744 \uc804\ub2ec \ud588\ub358 \uac83\uacfc \ub2ec\ub9ac, \uc0c8 SoapReflectionImporter\ub97c \ub9cc\ub4e4\uace0 serialize\ub41c \ud074\ub798\uc2a4\uc758 \ud615\uc2dd\uc73c\ub85c ImportTypeMapping \uba54\uc11c\ub4dc\ub97c \ud638\ucd9c\ud558\uc5ec XmlTypeMapping\uc744 \ub9cc\ub4e0\ub4a4 XmlSerializer\uc0dd\uc131\uc790 \ub9e4\uac1c \ubcc0\uc218\uc5d0 \uc804\ub2ec \ud55c\ub2e4.<br \/>\n<\/p>\n<pre class=\"lang:c# decode:true\">\nclass Program\n{\n\tstatic void Main(string[] args)\n\t{\n\t\tMyObject myObject = new MyObject();\n\n\t\tXmlTypeMapping xmlTypeMapping =\n\t\t\t\t  new SoapReflectionImporter().ImportTypeMapping(typeof (MyObject));\n\n\t\tXmlSerializer xmlSerializer = new XmlSerializer(xmlTypeMapping);\n\t\tStreamWriter writer = new StreamWriter(\"myObject.xml\");\n\t\txmlSerializer.Serialize(writer, myObject);\n\t\twriter.Close();\n\t}\n}\n<\/pre>\n<p>\uae30\uc874\uc758 XML serializer\uc5d0\uc11c XmlSerializer\uc758 \uc0dd\uc131\ubc29\uc2dd\ub9cc \ubcc0\uacbd\ub418\uc5c8\ub2e4.<br \/>\n<br \/>\n\uc774\ub54c \uacb0\uacfc\ubb3c myObject.xml\uc5d0\ub294 \ub2e4\uc74c\uacfc \uac19\uc740 \ub0b4\uc6a9\uc774 \uc788\ub2e4.<\/p>\n<pre class=\"lang:xhtml decode:true\">\n<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<myObject xmlns:xsi=\"http:\/\/www.w3.org\/2001\/XMLSchema-instance\"xmlns:xsd=\"http:\/\/www.w3.org\/2001\/XMLSchema\" id=\"id1\">\n  <n1 xsi:type=\"xsd:int\">1<\/n1>\n  <n2 xsi:type=\"xsd:int\">2<\/n2>\n  <str xsi:type=\"xsd:string\">Xml Serialization<\/str>\n<\/myObject>\n<\/pre>\n<p>SOAP\ud615\uc2dd\uc73c\ub85c \uc778\ucf54\ub529\ub41c \ub370\uc774\ud130\uac00 \uc788\uc74c\uc744 \ud655\uc778\ud560 \uc218 \uc788\ub2e4.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>serialization \uc774\ub780 \uac1c\uccb4\ub97c \uc800\uc7a5\ud558\uac70\ub098 \uc804\uc1a1\ud560 \uc218 \uc788\ub294 \ud615\ud0dc\ub85c \uac1c\uccb4\uc758 \uc0c1\ud0dc\ub97c \ubcc0\ud658\ud558\ub294 \ud504\ub85c\uc138\uc2a4 \uc774\ub2e4. \uadf8\ub9ac\uace0serialization\uacfc \ubc18\ub300\ub85c \ub2e4\uc2dc \uac1c\uccb4\ub85c \ubcc0\ud658\ud558\ub294 \uac83\uc744 deserialization\uc774\ub77c \ud55c\ub2e4. serialization\uc744 \uc0ac\uc6a9\ud558\ub294 \uac00\uc7a5 \ud070 \uc774\uc720\ub294 \uac1c\uccb4\uc758 \uc0c1\ud0dc\ub97c \uc800\uc7a5\uc18c\uc5d0 \ubcf4\uc874 \ud588\ub2e4\uac00 \ub098\uc911\uc5d0 \ub611\uac19\uc740 \ubcf5\uc0ac\ubcf8\uc744 \ub2e4\uc2dc \ub9cc\ub4e4\uac70\ub098 \ud55c \uc751\uc6a9\ud504\ub85c\uadf8\ub7a8 \uc5d0\uc11c \ub2e4\ub978 \uc751\uc6a9\ud504\ub85c\uadf8\ub7a8\uc73c\ub85c \uac1c\uccb4\ub97c \uc804\uc1a1\ud558\uae30 \uc704\ud574\uc11c \uc774\ub2e4. .NET Framework\uc5d0\uc11c\ub294 \uc81c\uacf5\ud558\ub294 serialize \ubc29\uc2dd\uc740 \ud06c\uac8c 2\uac00\uc9c0\ub85c \ub098\ub20c \uc218 \uc788\ub2e4. [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"spay_email":""},"categories":[13,6],"tags":[480,67,222,223,233,296,431],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/pXV5a-Ag","_links":{"self":[{"href":"https:\/\/talsu.net\/index.php?rest_route=\/wp\/v2\/posts\/2248"}],"collection":[{"href":"https:\/\/talsu.net\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/talsu.net\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/talsu.net\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/talsu.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=2248"}],"version-history":[{"count":0,"href":"https:\/\/talsu.net\/index.php?rest_route=\/wp\/v2\/posts\/2248\/revisions"}],"wp:attachment":[{"href":"https:\/\/talsu.net\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=2248"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/talsu.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=2248"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/talsu.net\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=2248"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}