version 0.3.2
[fms.git] / src / freenet / introductionpuzzlexml.cpp
1 #include "../../include/freenet/introductionpuzzlexml.h"\r
2 \r
3 #ifdef XMEM\r
4         #include <xmem.h>\r
5 #endif\r
6 \r
7 IntroductionPuzzleXML::IntroductionPuzzleXML()\r
8 {\r
9         Initialize();\r
10 }\r
11 \r
12 std::string IntroductionPuzzleXML::GetXML()\r
13 {\r
14         Poco::AutoPtr<Poco::XML::Document> doc=new Poco::XML::Document;\r
15         Poco::AutoPtr<Poco::XML::Element> root=doc->createElement("IntroductionPuzzle");\r
16 \r
17         doc->appendChild(root);\r
18 \r
19         root->appendChild(XMLCreateTextElement(doc,"Type",m_type));\r
20 \r
21         root->appendChild(XMLCreateCDATAElement(doc,"UUID",m_uuid));\r
22 \r
23         root->appendChild(XMLCreateTextElement(doc,"MimeType",m_mimetype));\r
24 \r
25         root->appendChild(XMLCreateTextElement(doc,"PuzzleData",m_puzzledata));\r
26 \r
27         return GenerateXML(doc);\r
28 }\r
29 \r
30 void IntroductionPuzzleXML::Initialize()\r
31 {\r
32         m_type="";\r
33         m_uuid="";\r
34         m_puzzledata="";\r
35         m_mimetype="";\r
36 }\r
37 \r
38 const bool IntroductionPuzzleXML::ParseXML(const std::string &xml)\r
39 {\r
40         bool parsed=false;\r
41         Poco::XML::DOMParser dp;\r
42 \r
43         Initialize();\r
44 \r
45         try\r
46         {\r
47                 Poco::AutoPtr<Poco::XML::Document> doc=dp.parseString(FixCDATA(xml));\r
48                 Poco::XML::Element *root=XMLGetFirstChild(doc,"IntroductionPuzzle");\r
49                 Poco::XML::Element *txt=NULL;\r
50 \r
51                 txt=XMLGetFirstChild(root,"Type");\r
52                 if(txt)\r
53                 {\r
54                         if(txt->firstChild())\r
55                         {\r
56                                 m_type=SanitizeSingleString(txt->firstChild()->getNodeValue());\r
57                         }\r
58                 }\r
59                 txt=XMLGetFirstChild(root,"UUID");\r
60                 if(txt)\r
61                 {\r
62                         if(txt->firstChild())\r
63                         {\r
64                                 m_uuid=SanitizeSingleString(txt->firstChild()->getNodeValue());\r
65                         }\r
66                 }\r
67                 txt=XMLGetFirstChild(root,"MimeType");\r
68                 if(txt)\r
69                 {\r
70                         if(txt->firstChild())\r
71                         {\r
72                                 m_mimetype=SanitizeSingleString(txt->firstChild()->getNodeValue());\r
73                         }\r
74                 }\r
75                 txt=XMLGetFirstChild(root,"PuzzleData");\r
76                 if(txt)\r
77                 {\r
78                         if(txt->firstChild())\r
79                         {\r
80                                 m_puzzledata=SanitizeSingleString(txt->firstChild()->getNodeValue());\r
81                         }\r
82                 }\r
83 \r
84                 parsed=true;\r
85         }\r
86         catch(...)\r
87         {\r
88         }\r
89 \r
90         return parsed;\r
91 }\r