version 0.3.2
[fms.git] / src / freenet / fmsversionxml.cpp
diff --git a/src/freenet/fmsversionxml.cpp b/src/freenet/fmsversionxml.cpp
new file mode 100644 (file)
index 0000000..655faa5
--- /dev/null
@@ -0,0 +1,104 @@
+#include "../../include/freenet/fmsversionxml.h"\r
+\r
+FMSVersionXML::FMSVersionXML()\r
+{\r
+       Initialize();\r
+}\r
+\r
+std::string FMSVersionXML::GetXML()\r
+{\r
+       Poco::AutoPtr<Poco::XML::Document> doc=new Poco::XML::Document;\r
+       Poco::AutoPtr<Poco::XML::Element> root=doc->createElement("FMSVersion");\r
+\r
+       doc->appendChild(root);\r
+\r
+       root->appendChild(XMLCreateTextElement(doc,"Major",m_major));\r
+\r
+       root->appendChild(XMLCreateTextElement(doc,"Minor",m_minor));\r
+\r
+       root->appendChild(XMLCreateTextElement(doc,"Release",m_release));\r
+\r
+       root->appendChild(XMLCreateCDATAElement(doc,"Notes",m_notes));\r
+\r
+       root->appendChild(XMLCreateCDATAElement(doc,"Changes",m_changes));\r
+\r
+       root->appendChild(XMLCreateCDATAElement(doc,"PageKey",m_pagekey));\r
+\r
+       root->appendChild(XMLCreateCDATAElement(doc,"SourceKey",m_sourcekey));\r
+\r
+       return GenerateXML(doc);\r
+}\r
+\r
+void FMSVersionXML::Initialize()\r
+{\r
+       m_major=0;\r
+       m_minor=0;\r
+       m_release=0;\r
+       m_notes="";\r
+       m_changes="";\r
+       m_pagekey="";\r
+       m_sourcekey="";\r
+}\r
+\r
+const bool FMSVersionXML::ParseXML(const std::string &xml)\r
+{\r
+\r
+       bool parsed=false;\r
+       Poco::XML::DOMParser dp;\r
+\r
+       Initialize();\r
+\r
+       try\r
+       {\r
+               Poco::AutoPtr<Poco::XML::Document> doc=dp.parseString(FixCDATA(xml));\r
+               Poco::XML::Element *root=XMLGetFirstChild(doc,"FMSVersion");\r
+               Poco::XML::Element *txt=NULL;\r
+\r
+               txt=XMLGetFirstChild(root,"Major");\r
+               if(txt && txt->firstChild())\r
+               {\r
+                       std::string tempstr=txt->firstChild()->getNodeValue();\r
+                       StringFunctions::Convert(tempstr,m_major);\r
+               }\r
+               txt=XMLGetFirstChild(root,"Minor");\r
+               if(txt && txt->firstChild())\r
+               {\r
+                       std::string tempstr=txt->firstChild()->getNodeValue();\r
+                       StringFunctions::Convert(tempstr,m_minor);\r
+               }\r
+               txt=XMLGetFirstChild(root,"Release");\r
+               if(txt && txt->firstChild())\r
+               {\r
+                       std::string tempstr=txt->firstChild()->getNodeValue();\r
+                       StringFunctions::Convert(tempstr,m_release);\r
+               }\r
+               txt=XMLGetFirstChild(root,"Notes");\r
+               if(txt && txt->firstChild())\r
+               {\r
+                       m_notes=txt->firstChild()->getNodeValue();\r
+               }\r
+               txt=XMLGetFirstChild(root,"Changes");\r
+               if(txt && txt->firstChild())\r
+               {\r
+                       m_changes=txt->firstChild()->getNodeValue();\r
+               }\r
+               txt=XMLGetFirstChild(root,"PageKey");\r
+               if(txt && txt->firstChild())\r
+               {\r
+                       m_pagekey=txt->firstChild()->getNodeValue();\r
+               }\r
+               txt=XMLGetFirstChild(root,"SourceKey");\r
+               if(txt && txt->firstChild())\r
+               {\r
+                       m_sourcekey=txt->firstChild()->getNodeValue();\r
+               }\r
+\r
+               parsed=true;\r
+\r
+       }\r
+       catch(...)\r
+       {\r
+       }\r
+\r
+       return parsed;\r
+}\r