version 0.3.0
[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         //TiXmlDocument td;\r
16         //TiXmlDeclaration *tdec=new TiXmlDeclaration("1.0","UTF-8","");\r
17         Poco::XML::Element *root=doc->createElement("IntroductionPuzzle");\r
18         //TiXmlElement *tid;\r
19         //TiXmlPrinter tp;\r
20 \r
21         doc->appendChild(root);\r
22         //td.LinkEndChild(tdec);\r
23         //tid=new TiXmlElement("IntroductionPuzzle");\r
24         //td.LinkEndChild(tid);\r
25 \r
26         root->appendChild(XMLCreateTextElement(doc,"Type",m_type));\r
27         //tid->LinkEndChild(XMLCreateTextElement("Type",m_type));\r
28 \r
29         root->appendChild(XMLCreateCDATAElement(doc,"UUID",m_uuid));\r
30         //tid->LinkEndChild(XMLCreateCDATAElement("UUID",m_uuid));\r
31 \r
32         root->appendChild(XMLCreateTextElement(doc,"MimeType",m_mimetype));\r
33         //tid->LinkEndChild(XMLCreateTextElement("MimeType",m_mimetype));\r
34 \r
35         root->appendChild(XMLCreateTextElement(doc,"PuzzleData",m_puzzledata));\r
36         //tid->LinkEndChild(XMLCreateTextElement("PuzzleData",m_puzzledata));\r
37 \r
38         //td.Accept(&tp);\r
39         //return std::string(tp.CStr());\r
40         return GenerateXML(doc);\r
41 }\r
42 \r
43 void IntroductionPuzzleXML::Initialize()\r
44 {\r
45         m_type="";\r
46         m_uuid="";\r
47         m_puzzledata="";\r
48         m_mimetype="";\r
49 }\r
50 \r
51 const bool IntroductionPuzzleXML::ParseXML(const std::string &xml)\r
52 {\r
53         bool parsed=false;\r
54         Poco::XML::DOMParser dp;\r
55 \r
56         Initialize();\r
57 \r
58         try\r
59         {\r
60                 Poco::AutoPtr<Poco::XML::Document> doc=dp.parseString(FixCDATA(xml));\r
61                 Poco::XML::Element *root=XMLGetFirstChild(doc,"IntroductionPuzzle");\r
62                 Poco::XML::Element *txt=NULL;\r
63 \r
64                 txt=XMLGetFirstChild(root,"Type");\r
65                 if(txt)\r
66                 {\r
67                         if(txt->firstChild())\r
68                         {\r
69                                 m_type=SanitizeSingleString(txt->firstChild()->getNodeValue());\r
70                         }\r
71                 }\r
72                 txt=XMLGetFirstChild(root,"UUID");\r
73                 if(txt)\r
74                 {\r
75                         if(txt->firstChild())\r
76                         {\r
77                                 m_uuid=SanitizeSingleString(txt->firstChild()->getNodeValue());\r
78                         }\r
79                 }\r
80                 txt=XMLGetFirstChild(root,"MimeType");\r
81                 if(txt)\r
82                 {\r
83                         if(txt->firstChild())\r
84                         {\r
85                                 m_mimetype=SanitizeSingleString(txt->firstChild()->getNodeValue());\r
86                         }\r
87                 }\r
88                 txt=XMLGetFirstChild(root,"PuzzleData");\r
89                 if(txt)\r
90                 {\r
91                         if(txt->firstChild())\r
92                         {\r
93                                 m_puzzledata=SanitizeSingleString(txt->firstChild()->getNodeValue());\r
94                         }\r
95                 }\r
96 \r
97                 parsed=true;\r
98         }\r
99         catch(...)\r
100         {\r
101         }\r
102 \r
103         return parsed;\r
104 \r
105         /*\r
106         TiXmlDocument td;\r
107         td.Parse(xml.c_str());\r
108 \r
109         if(!td.Error())\r
110         {\r
111                 TiXmlText *txt;\r
112                 TiXmlHandle hnd(&td);\r
113 \r
114                 Initialize();\r
115 \r
116                 txt=hnd.FirstChild("IntroductionPuzzle").FirstChild("Type").FirstChild().ToText();\r
117                 if(txt)\r
118                 {\r
119                         m_type=SanitizeSingleString(txt->ValueStr());\r
120                 }\r
121 \r
122                 txt=hnd.FirstChild("IntroductionPuzzle").FirstChild("UUID").FirstChild().ToText();\r
123                 if(txt)\r
124                 {\r
125                         m_uuid=SanitizeSingleString(txt->ValueStr());\r
126                 }\r
127 \r
128                 txt=hnd.FirstChild("IntroductionPuzzle").FirstChild("MimeType").FirstChild().ToText();\r
129                 if(txt)\r
130                 {\r
131                         m_mimetype=SanitizeSingleString(txt->ValueStr());\r
132                 }\r
133 \r
134                 txt=hnd.FirstChild("IntroductionPuzzle").FirstChild("PuzzleData").FirstChild().ToText();\r
135                 if(txt)\r
136                 {\r
137                         m_puzzledata=txt->ValueStr();\r
138                 }\r
139 \r
140                 return true;\r
141 \r
142         }\r
143         else\r
144         {\r
145                 return false;\r
146         }\r
147         */\r
148 }\r