version 0.3.0
[fms.git] / src / freenet / identityxml.cpp
index 4b0fa23..a440573 100644 (file)
@@ -11,32 +11,41 @@ IdentityXML::IdentityXML()
 \r
 std::string IdentityXML::GetXML()\r
 {\r
-       TiXmlDocument td;\r
-       TiXmlDeclaration *tdec=new TiXmlDeclaration("1.0","UTF-8","");\r
-       TiXmlElement *tid;\r
-       TiXmlPrinter tp;\r
+       Poco::AutoPtr<Poco::XML::Document> doc=new Poco::XML::Document;\r
+       //TiXmlDocument td;\r
+       //TiXmlDeclaration *tdec=new TiXmlDeclaration("1.0","UTF-8","");\r
+       Poco::XML::Element *root=doc->createElement("Identity");\r
+       //TiXmlElement *tid;\r
+       //TiXmlPrinter tp;\r
 \r
-       td.LinkEndChild(tdec);\r
-       tid=new TiXmlElement("Identity");\r
-       td.LinkEndChild(tid);\r
+       doc->appendChild(root);\r
+       //td.LinkEndChild(tdec);\r
+       //tid=new TiXmlElement("Identity");\r
+       //td.LinkEndChild(tid);\r
 \r
-       tid->LinkEndChild(XMLCreateCDATAElement("Name",m_name));\r
+       root->appendChild(XMLCreateCDATAElement(doc,"Name",m_name));\r
+       //tid->LinkEndChild(XMLCreateCDATAElement("Name",m_name));\r
 \r
-       tid->LinkEndChild(XMLCreateBooleanElement("SingleUse",m_singleuse));\r
+       root->appendChild(XMLCreateBooleanElement(doc,"SingleUse",m_singleuse));\r
+       //tid->LinkEndChild(XMLCreateBooleanElement("SingleUse",m_singleuse));\r
 \r
-       tid->LinkEndChild(XMLCreateBooleanElement("PublishTrustList",m_publishtrustlist));\r
+       root->appendChild(XMLCreateBooleanElement(doc,"PublishTrustList",m_publishtrustlist));\r
+       //tid->LinkEndChild(XMLCreateBooleanElement("PublishTrustList",m_publishtrustlist));\r
 \r
-       tid->LinkEndChild(XMLCreateBooleanElement("PublishBoardList",m_publishboardlist));\r
+       root->appendChild(XMLCreateBooleanElement(doc,"PublishBoardList",m_publishboardlist));\r
+       //tid->LinkEndChild(XMLCreateBooleanElement("PublishBoardList",m_publishboardlist));\r
 \r
        // freesite edition will be -1 if identity isn't publishing a freesite\r
        if(m_freesiteedition>=0)\r
        {\r
-               tid->LinkEndChild(XMLCreateTextElement("FreesiteEdition",m_freesiteedition));\r
+               root->appendChild(XMLCreateTextElement(doc,"FreesiteEdition",m_freesiteedition));\r
+               //tid->LinkEndChild(XMLCreateTextElement("FreesiteEdition",m_freesiteedition));\r
        }\r
 \r
-       td.Accept(&tp);\r
-       return std::string(tp.CStr());\r
+       //td.Accept(&tp);\r
+       //return std::string(tp.CStr());\r
 \r
+       return GenerateXML(doc);\r
 }\r
 \r
 void IdentityXML::Initialize()\r
@@ -50,6 +59,55 @@ void IdentityXML::Initialize()
 \r
 const bool IdentityXML::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,"Identity");\r
+               Poco::XML::Element *txt=NULL;\r
+\r
+               txt=XMLGetFirstChild(root,"Name");\r
+               if(txt)\r
+               {\r
+                       if(txt->firstChild())\r
+                       {\r
+                               m_name=txt->firstChild()->getNodeValue();\r
+                               if(m_name.size()>40)\r
+                               {\r
+                                       m_name.erase(40);\r
+                               }\r
+                       }\r
+               }\r
+               \r
+               m_singleuse=XMLGetBooleanElement(root,"SingleUse");\r
+               m_publishtrustlist=XMLGetBooleanElement(root,"PublishTrustList");\r
+               m_publishboardlist=XMLGetBooleanElement(root,"PublishBoardList");\r
+               \r
+               txt=XMLGetFirstChild(root,"FreesiteEdition");\r
+               if(txt)\r
+               {\r
+                       if(txt->firstChild())\r
+                       {\r
+                               std::string editionstr=txt->firstChild()->getNodeValue();\r
+                               StringFunctions::Convert(editionstr,m_freesiteedition);\r
+                       }\r
+               }\r
+\r
+               parsed=true;\r
+\r
+       }\r
+       catch(...)\r
+       {\r
+       }\r
+\r
+       return parsed;\r
+\r
+       /*\r
        TiXmlDocument td;\r
        td.Parse(xml.c_str());\r
 \r
@@ -91,5 +149,5 @@ const bool IdentityXML::ParseXML(const std::string &xml)
        {\r
                return false;\r
        }\r
-\r
+*/\r
 }\r