{"id":949,"date":"2009-09-03T10:36:25","date_gmt":"2009-09-03T10:36:25","guid":{"rendered":"http:\/\/www.gisdeveloper.co.kr\/?p=949"},"modified":"2017-01-29T10:02:03","modified_gmt":"2017-01-29T01:02:03","slug":"c-xml-%ed%8c%8c%ec%84%9c-markupstl","status":"publish","type":"post","link":"http:\/\/www.gisdeveloper.co.kr\/?p=949","title":{"rendered":"[C++] XML \ud30c\uc11c, CMarkup"},"content":{"rendered":"<p>XML \ub370\uc774\ud130\ub97c \uc4f0\uace0 \uc77d\uae30 \uc704\ud574\uc11c \uc778\ud130\ub137\uc744 \uac80\uc0c9\ud558\ub358 \ucc28\uc5d0 \uc18d\ub3c4\ub97c \uac15\uc810\uc73c\ub85c \ub0b4\uc138\uc6b0\uba74\uc11c STL \ub9cc\uc744 \uc0ac\uc6a9\ud558\uc5ec \ud50c\ub7ab\ud3fc \uc774\uc2dd\uc5d0\ub3c4 \ub6f0\uc5b4\ub09c \uc624\ud508\uc18c\uc2a4\ub97c \ucc3e\uc558\ub294\ub370\uc694. \ubc14\ub85c CMarkup \uc785\ub2c8\ub2e4. \ub2e4\uc6b4\ub85c\ub4dc \uc0ac\uc774\ud2b8\ub294 <a href=\"http:\/\/www.firstobject.com\/\">http:\/\/www.firstobject.com\/<\/a>\u00a0\uc774\uad6c\uc694. \uc0ac\uc6a9\ud574 \ubcf4\ub2c8 XML\uc758 charset\ub3c4 \uc9c0\uc6d0\ud558\uc5ec \ub354\uc6b1 \ubbff\uc74c\uc774 \uac00\ub294 \uc624\ud508\uc18c\uc2a4\uc600\uc2b5\ub2c8\ub2e4. XML\uc744 \ucc98\ub9ac\ud560 \uc77c\uc774 \uc788\ub2e4\uba74 \ud55c\ubc88 \uc0ac\uc6a9\ud574 \ubcf4\uc2dc\uae30 \ubc14\ub78d\ub2c8\ub2e4.<\/p>\n<p>\ucd94\ud6c4 \uc774 \uc624\ud508\uc18c\uc2a4\ub97c \ub2e4\uc2dc \uc0ac\uc6a9\ud560 \ub54c\ub97c \ub300\ube44\ud558\uc5ec \uc0ac\uc6a9 \ubc29\ubc95\uc744 \uc815\ub9ac\ud574 \uc815\ub9ac\ucc28\uc6d0\uc5d0\uc11c \uc62c\ub824\ubd05\ub2c8\ub2e4.<\/p>\n<p>\ucef4\ud30c\uc77c \uc2dc \uc8fc\uc758\ud560 \uc0ac\ud56d\uc740&#8230; CMarkup\uc740 MFC\uc758 CString\uc640 STL\uc758 string\uc5d0 \ub300\ud55c \ubb38\uc790\uc5f4 \ud0c0\uc785\uc744 \uc0ac\uc6a9\ud558\uba70 \uae30\ubcf8\uc801\uc73c\ub85c CString\uc744 \uc0ac\uc6a9\ud569\ub2c8\ub2e4. \ud50c\ub7ab\ud3fc\uc5d0 \ub3c5\ub9bd\uc801\uc778 \uad6c\uc131\uc744 \uc704\ud574\uc11c STL\uc744 \uc0ac\uc6a9\ud558\ub294\uac83\uc774 \uc88b\uae30 \ub54c\ubb38\uc5d0 \uc804\ucc98\ub9ac\uc5d0\uc11c MARKUP_STL\ub97c \uc815\uc758\ud574\uc918\uc57c \ud569\ub2c8\ub2e4. \uc774 \uc804\ucc98\ub9ac \uc815\uc758\ub294 \ud504\ub85c\uc81d\ud2b8\uc758 \uc18d\uc131 \ud398\uc774\uc9c0\uc5d0\uc11c \ud574\uc90c\uc73c\ub85c\uc368 \uc804\uc5ed\uc801\uc73c\ub85c \uc801\uc6a9\ub418\ub3c4\ub85d \ud574\uc57c \ud569\ub2c8\ub2e4. \uc544\ub798\uc758 \ucf54\ub4dc\ub294 XML\uc744 \uc4f0\ub294 \uc608\uc81c \ucf54\ub4dc\uc785\ub2c8\ub2e4. \uc708\ub3c4\uc6b0\uc988 \uacc4\uc5f4\uc758 \uac1c\ubc1c\ud234\uc778 VS2008\ub85c \uc791\uc131\ud588\uc2b5\ub2c8\ub2e4.<\/p>\n<pre>\r\n#include \"stdafx.h\"\r\n#include \"..\/Markup.h\"\r\n\r\nint _tmain(int argc, _TCHAR* argv[])\r\n{\r\n\u00a0 \u00a0 CMarkup xml;\r\n\r\n\u00a0 \u00a0 xml.AddElem( \"ORDER\" );\r\n\u00a0\u00a0 \u00a0xml.AddChildElem( \"ITEM\" );\r\n\u00a0 \u00a0 xml.IntoElem();\r\n\u00a0 \u00a0 xml.AddAttrib(\"type\", \"A\");\r\n\u00a0 \u00a0 xml.AddChildElem( \"SN\", \"132487A-J\" );\r\n\u00a0 \u00a0 xml.AddChildElem( \"NAME\", \"crank casing\" );\r\n\u00a0 \u00a0 xml.AddChildElem( \"QTY\", \"1\" );\r\n\u00a0 \u00a0 xml.OutOfElem();\r\n\r\n\u00a0 \u00a0 xml.AddChildElem( \"ITEM\" );\r\n\u00a0 \u00a0 xml.IntoElem();\r\n\u00a0 \u00a0 xml.AddAttrib(\"type\", \"C\");\r\n\u00a0 \u00a0 xml.AddChildElem( \"SN\", \"434417F-Y\" );\r\n\u00a0 \u00a0 xml.AddChildElem( \"NAME\", \"kully casing\" );\r\n\u00a0 \u00a0 xml.AddChildElem( \"QTY\", \"2\" );\r\n\u00a0 \u00a0 xml.OutOfElem();\r\n\r\n\u00a0 \u00a0 std::string csXML = xml.GetDoc();\r\n\r\n\u00a0 \u00a0 printf(\"%s\", csXML.c_str());\r\n\r\n\u00a0 \u00a0 return 0;\r\n}<\/pre>\n<p>\uacb0\uacfc\ub294 \ub2e4\uc74c\uacfc \uac19\uc2b5\ub2c8\ub2e4.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter\" src=\"http:\/\/www.gisdeveloper.co.kr\/wp-content\/uploads\/1\/1014927904.jpg\" alt=\"\uc0ac\uc6a9\uc790 \uc0bd\uc785 \uc774\ubbf8\uc9c0\" width=\"269\" height=\"210\" \/><br \/>\nAddElement\ub97c \ud1b5\ud574 \uc5d8\ub9ac\uba3c\ud2b8\ub97c \ub9cc\ub4e4\uace0, \ud574\ub2f9 \uc5d8\ub9ac\uba3c\ud2b8\uc758 \uc790\uc2dd\uc744 \ucd94\uac00\ud558\uae30 \uc704\ud574 AddChildElem\uc744 \uc0ac\uc6a9\ud558\uac70\ub098 \uba3c\uc800 IntoElem\uc744 \ud638\ucd9c\ud55c \ud6c4 \ub2e4\uc2dc AddElement\ub97c \uc0ac\uc6a9\ud569\ub2c8\ub2e4.<\/p>\n<p>\uc774\uc81c \ubc18\ub300\ub85c \uc704\uc640 \uac19\uc740 XML \ub370\uc774\ud130\ub97c \uc77d\uc5b4 \ubcf4\ub3c4\ub85d \ud558\uaca0\uc2b5\ub2c8\ub2e4. \uba3c\uc800 \uc704\uc758 \uacb0\uacfc\ub97c \ud30c\uc77c\ub85c \uc800\uc7a5\ud574 \ub193\uace0 \uadf8 \ud30c\uc77c\uc744 \uc77d\uc5b4 \ub370\uc774\ud130\ub97c \ucd94\ucd9c\ud558\ub294 \uc608\uc81c\ub97c \ub4e4\uc5b4 \ubcf4\uaca0\uc2b5\ub2c8\ub2e4. \uc608\ub97c \ub4e4\uc5b4&#8230; \uc544\uc774\ud15c(ITEM)\uc758 \uc774\ub984(NAME)\uacfc \uc218\ub7c9(QTY)\uc744 \uc77d\uc5b4 \ubcf4\ub3c4\ub85d \ud558\uaca0\uc2b5\ub2c8\ub2e4. \uc704\uc758 XML \ubb38\uc790\uc5f4\uc758 \uacbd\uc6b0 \uc544\uc774\ud15c\uc758 \uac1c\uc218\ub294 \ucd1d2\uac1c\uc774\ubbc0\ub85c 2\uac1c\uac00 \uac80\uc0c9\ub420 \uac83\uc785\ub2c8\ub2e4. \ub2e4\uc74c\uc774 \uc774 \uc608\uc81c\uc640 \ubd80\ud569\ub418\ub294 \ucf54\ub4dc\uc785\ub2c8\ub2e4.<\/p>\n<pre>\r\nCMarkup xml;\r\nxml.Load(\"d:\/data.xml\");\r\n\r\nwhile ( xml.FindChildElem(\"ITEM\") )\r\n{\r\n\u00a0\u00a0 \u00a0xml.IntoElem();\r\n\r\n\u00a0 \u00a0 xml.FindChildElem( \"NAME\" );\r\n\u00a0 \u00a0 std::string csSN = xml.GetChildData();\r\n\u00a0 \u00a0 xml.FindChildElem( \"QTY\" );\r\n\u00a0 \u00a0 int nQty = atoi(xml.GetChildData().c_str());\r\n\r\n\u00a0 \u00a0 xml.OutOfElem();\r\n\r\n\u00a0 \u00a0 printf(\"%s, %d\\n\", csSN.c_str(), nQty);\r\n}<\/pre>\n<p>\uba3c\uc800 XML \ub370\uc774\ud130\ub97c \uac00\uc9c0\uace0 \uc788\ub294 \ud30c\uc77c\uc744 Load \ub9e4\uc11c\ub4dc\ub97c \uc774\uc6a9\ud574 \uc77d\uc2b5\ub2c8\ub2e4. \ub2e4\uc2dc \ubc18\ubcf5\ubb38\uc744 \uc0ac\uc6a9\ud558\uc5ec \ub8e8\ud2b8 \uc5d8\ub9ac\uba3c\ud2b8\uc758 \uc790\uc2dd ITEM \uc5d8\ub9ac\uba3c\ud2b8\ub97c \uac80\uc0c9\ud558\uae30 \uc704\ud574 FindChildElem\uc744 \uc0ac\uc6a9\ud569\ub2c8\ub2e4. \uadf8\ub7ec\uba74 \ud574\ub2f9\ub418\ub294 \uc790\uc2dd \uc5d8\ub9ac\uba3c\ud2b8\uac00 \ucd94\ucd9c\ub429\ub2c8\ub2e4. \ud574\ub2f9\ub418\ub294 \uc790\uc2dd \uc5d8\ub9ac\uba3c\ud2b8\uc758 \uc790\uc2dd \uc5d8\ub9ac\uba3c\ud2b8\ub97c \uc77d\uae30 \uc704\ud574 IntoElem() \ud568\uc218\ub97c \uc0ac\uc6a9\ud55c \ub4a4\uc5d0 \uc6d0\ud558\ub294 \uc5d8\ub9ac\uba3c\ud2b8(NAME, QTY)\ub97c \uac80\uc0c9\ud558\uae30 \uc704\ud574 FindChildElem\uc744 \ud638\ucd9c\ud558\uace0 \uc2e4\uc81c\ub85c \uac12\uc744 \uc77d\uae30 \uc704\ud574\uc11c GetChildData \ub9e4\uc11c\ub4dc\ub97c \ud638\ucd9c\ud569\ub2c8\ub2e4. \ub2e4 \uc77d\uc740 \ud6c4 OutOfElem()\uc744 \ud638\ucd9c\ud569\ub2c8\ub2e4. \uacb0\uacfc\ub294 \uc544\ub798\uc640 \uac19\uc2b5\ub2c8\ub2e4.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter\" src=\"http:\/\/www.gisdeveloper.co.kr\/wp-content\/uploads\/1\/1057510328.jpg\" alt=\"\uc0ac\uc6a9\uc790 \uc0bd\uc785 \uc774\ubbf8\uc9c0\" width=\"277\" height=\"49\" \/><\/p>\n","protected":false},"excerpt":{"rendered":"<p>XML \ub370\uc774\ud130\ub97c \uc4f0\uace0 \uc77d\uae30 \uc704\ud574\uc11c \uc778\ud130\ub137\uc744 \uac80\uc0c9\ud558\ub358 \ucc28\uc5d0 \uc18d\ub3c4\ub97c \uac15\uc810\uc73c\ub85c \ub0b4\uc138\uc6b0\uba74\uc11c STL \ub9cc\uc744 \uc0ac\uc6a9\ud558\uc5ec \ud50c\ub7ab\ud3fc \uc774\uc2dd\uc5d0\ub3c4 \ub6f0\uc5b4\ub09c \uc624\ud508\uc18c\uc2a4\ub97c \ucc3e\uc558\ub294\ub370\uc694. \ubc14\ub85c CMarkup \uc785\ub2c8\ub2e4. \ub2e4\uc6b4\ub85c\ub4dc \uc0ac\uc774\ud2b8\ub294 http:\/\/www.firstobject.com\/\u00a0\uc774\uad6c\uc694. \uc0ac\uc6a9\ud574 \ubcf4\ub2c8 XML\uc758 charset\ub3c4 \uc9c0\uc6d0\ud558\uc5ec \ub354\uc6b1 \ubbff\uc74c\uc774 \uac00\ub294 \uc624\ud508\uc18c\uc2a4\uc600\uc2b5\ub2c8\ub2e4. XML\uc744 \ucc98\ub9ac\ud560 \uc77c\uc774 \uc788\ub2e4\uba74 \ud55c\ubc88 \uc0ac\uc6a9\ud574 \ubcf4\uc2dc\uae30 \ubc14\ub78d\ub2c8\ub2e4. \ucd94\ud6c4 \uc774 \uc624\ud508\uc18c\uc2a4\ub97c \ub2e4\uc2dc \uc0ac\uc6a9\ud560 \ub54c\ub97c \ub300\ube44\ud558\uc5ec \uc0ac\uc6a9 \ubc29\ubc95\uc744 \uc815\ub9ac\ud574 \uc815\ub9ac\ucc28\uc6d0\uc5d0\uc11c \uc62c\ub824\ubd05\ub2c8\ub2e4. \ucef4\ud30c\uc77c &hellip; <\/p>\n<p class=\"link-more\"><a href=\"http:\/\/www.gisdeveloper.co.kr\/?p=949\" class=\"more-link\">\ub354 \ubcf4\uae30<span class=\"screen-reader-text\"> &#8220;[C++] XML \ud30c\uc11c, CMarkup&#8221;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[12],"tags":[47],"class_list":["post-949","post","type-post","status-publish","format-standard","hentry","category-opensource","tag-xml"],"_links":{"self":[{"href":"http:\/\/www.gisdeveloper.co.kr\/index.php?rest_route=\/wp\/v2\/posts\/949","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/www.gisdeveloper.co.kr\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/www.gisdeveloper.co.kr\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/www.gisdeveloper.co.kr\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/www.gisdeveloper.co.kr\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=949"}],"version-history":[{"count":1,"href":"http:\/\/www.gisdeveloper.co.kr\/index.php?rest_route=\/wp\/v2\/posts\/949\/revisions"}],"predecessor-version":[{"id":3433,"href":"http:\/\/www.gisdeveloper.co.kr\/index.php?rest_route=\/wp\/v2\/posts\/949\/revisions\/3433"}],"wp:attachment":[{"href":"http:\/\/www.gisdeveloper.co.kr\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=949"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/www.gisdeveloper.co.kr\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=949"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/www.gisdeveloper.co.kr\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=949"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}