\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
+ Poco::AutoPtr<Poco::XML::Element> root=doc->createElement("Identity");\r
\r
- td.LinkEndChild(tdec);\r
- tid=new TiXmlElement("Identity");\r
- td.LinkEndChild(tid);\r
+ doc->appendChild(root);\r
\r
- tid->LinkEndChild(XMLCreateCDATAElement("Name",m_name));\r
+ root->appendChild(XMLCreateCDATAElement(doc,"Name",m_name));\r
\r
- tid->LinkEndChild(XMLCreateBooleanElement("SingleUse",m_singleuse));\r
+ root->appendChild(XMLCreateBooleanElement(doc,"SingleUse",m_singleuse));\r
\r
- tid->LinkEndChild(XMLCreateBooleanElement("PublishTrustList",m_publishtrustlist));\r
+ root->appendChild(XMLCreateBooleanElement(doc,"PublishTrustList",m_publishtrustlist));\r
\r
- tid->LinkEndChild(XMLCreateBooleanElement("PublishBoardList",m_publishboardlist));\r
+ root->appendChild(XMLCreateBooleanElement(doc,"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
}\r
\r
- td.Accept(&tp);\r
- return std::string(tp.CStr());\r
-\r
+ return GenerateXML(doc);\r
}\r
\r
void IdentityXML::Initialize()\r
\r
const bool IdentityXML::ParseXML(const std::string &xml)\r
{\r
- TiXmlDocument td;\r
- td.Parse(xml.c_str());\r
\r
- if(!td.Error())\r
- {\r
- TiXmlText *txt;\r
- TiXmlHandle hnd(&td);\r
+ bool parsed=false;\r
+ Poco::XML::DOMParser dp;\r
\r
- Initialize();\r
+ Initialize();\r
\r
- txt=hnd.FirstChild("Identity").FirstChild("Name").FirstChild().ToText();\r
- if(txt)\r
- {\r
- m_name=txt->ValueStr();\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
- if(m_name.size()>40)\r
+ txt=XMLGetFirstChild(root,"Name");\r
+ if(txt)\r
{\r
- m_name.erase(40);\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(hnd.FirstChild("Identity").ToElement(),"SingleUse");\r
-\r
- m_publishtrustlist=XMLGetBooleanElement(hnd.FirstChild("Identity").ToElement(),"PublishTrustList");\r
-\r
- m_publishboardlist=XMLGetBooleanElement(hnd.FirstChild("Identity").ToElement(),"PublishBoardList");\r
-\r
- txt=hnd.FirstChild("Identity").FirstChild("FreesiteEdition").FirstChild().ToText();\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
- std::string editionstr=SanitizeSingleString(txt->ValueStr());\r
- StringFunctions::Convert(editionstr,m_freesiteedition);\r
+ if(txt->firstChild())\r
+ {\r
+ std::string editionstr=txt->firstChild()->getNodeValue();\r
+ StringFunctions::Convert(editionstr,m_freesiteedition);\r
+ }\r
}\r
\r
- return true;\r
+ parsed=true;\r
\r
}\r
- else\r
+ catch(...)\r
{\r
- return false;\r
}\r
\r
+ return parsed;\r
}\r