version 0.3.2
[fms.git] / src / freenet / fmsversionxml.cpp
1 #include "../../include/freenet/fmsversionxml.h"\r
2 \r
3 FMSVersionXML::FMSVersionXML()\r
4 {\r
5         Initialize();\r
6 }\r
7 \r
8 std::string FMSVersionXML::GetXML()\r
9 {\r
10         Poco::AutoPtr<Poco::XML::Document> doc=new Poco::XML::Document;\r
11         Poco::AutoPtr<Poco::XML::Element> root=doc->createElement("FMSVersion");\r
12 \r
13         doc->appendChild(root);\r
14 \r
15         root->appendChild(XMLCreateTextElement(doc,"Major",m_major));\r
16 \r
17         root->appendChild(XMLCreateTextElement(doc,"Minor",m_minor));\r
18 \r
19         root->appendChild(XMLCreateTextElement(doc,"Release",m_release));\r
20 \r
21         root->appendChild(XMLCreateCDATAElement(doc,"Notes",m_notes));\r
22 \r
23         root->appendChild(XMLCreateCDATAElement(doc,"Changes",m_changes));\r
24 \r
25         root->appendChild(XMLCreateCDATAElement(doc,"PageKey",m_pagekey));\r
26 \r
27         root->appendChild(XMLCreateCDATAElement(doc,"SourceKey",m_sourcekey));\r
28 \r
29         return GenerateXML(doc);\r
30 }\r
31 \r
32 void FMSVersionXML::Initialize()\r
33 {\r
34         m_major=0;\r
35         m_minor=0;\r
36         m_release=0;\r
37         m_notes="";\r
38         m_changes="";\r
39         m_pagekey="";\r
40         m_sourcekey="";\r
41 }\r
42 \r
43 const bool FMSVersionXML::ParseXML(const std::string &xml)\r
44 {\r
45 \r
46         bool parsed=false;\r
47         Poco::XML::DOMParser dp;\r
48 \r
49         Initialize();\r
50 \r
51         try\r
52         {\r
53                 Poco::AutoPtr<Poco::XML::Document> doc=dp.parseString(FixCDATA(xml));\r
54                 Poco::XML::Element *root=XMLGetFirstChild(doc,"FMSVersion");\r
55                 Poco::XML::Element *txt=NULL;\r
56 \r
57                 txt=XMLGetFirstChild(root,"Major");\r
58                 if(txt && txt->firstChild())\r
59                 {\r
60                         std::string tempstr=txt->firstChild()->getNodeValue();\r
61                         StringFunctions::Convert(tempstr,m_major);\r
62                 }\r
63                 txt=XMLGetFirstChild(root,"Minor");\r
64                 if(txt && txt->firstChild())\r
65                 {\r
66                         std::string tempstr=txt->firstChild()->getNodeValue();\r
67                         StringFunctions::Convert(tempstr,m_minor);\r
68                 }\r
69                 txt=XMLGetFirstChild(root,"Release");\r
70                 if(txt && txt->firstChild())\r
71                 {\r
72                         std::string tempstr=txt->firstChild()->getNodeValue();\r
73                         StringFunctions::Convert(tempstr,m_release);\r
74                 }\r
75                 txt=XMLGetFirstChild(root,"Notes");\r
76                 if(txt && txt->firstChild())\r
77                 {\r
78                         m_notes=txt->firstChild()->getNodeValue();\r
79                 }\r
80                 txt=XMLGetFirstChild(root,"Changes");\r
81                 if(txt && txt->firstChild())\r
82                 {\r
83                         m_changes=txt->firstChild()->getNodeValue();\r
84                 }\r
85                 txt=XMLGetFirstChild(root,"PageKey");\r
86                 if(txt && txt->firstChild())\r
87                 {\r
88                         m_pagekey=txt->firstChild()->getNodeValue();\r
89                 }\r
90                 txt=XMLGetFirstChild(root,"SourceKey");\r
91                 if(txt && txt->firstChild())\r
92                 {\r
93                         m_sourcekey=txt->firstChild()->getNodeValue();\r
94                 }\r
95 \r
96                 parsed=true;\r
97 \r
98         }\r
99         catch(...)\r
100         {\r
101         }\r
102 \r
103         return parsed;\r
104 }\r