version 0.1.11
[fms.git] / include / ifmsxmldocument.h
1 #ifndef _ifmsxmldocument_\r
2 #define _ifmsxmldocument_\r
3 \r
4 #include "stringfunctions.h"\r
5 \r
6 #include <string>\r
7 #include <tinyxml.h>\r
8 \r
9 #ifdef XMEM\r
10         #include <xmem.h>\r
11 #endif\r
12 \r
13 /**\r
14         \brief Interface for objects that represent an XML document\r
15 */\r
16 class IFMSXMLDocument\r
17 {\r
18 public:\r
19         \r
20         /**\r
21                 \brief Returns xml document represented by this object\r
22                 \r
23                 \return xml document\r
24         */\r
25         virtual std::string GetXML()=0;\r
26         \r
27         /**\r
28                 \brief Parses an xml document into this object\r
29                 \r
30                 \return true if the document was parsed successfully, false if it was not\r
31         */\r
32         virtual const bool ParseXML(const std::string &xml)=0;\r
33 \r
34 protected:\r
35         /**\r
36                 \brief Creates and returns an element with a boolean value\r
37         */\r
38         virtual TiXmlElement *XMLCreateBooleanElement(const std::string &name, const bool value)\r
39         {\r
40                 TiXmlText *txt=new TiXmlText(value ? "true" : "false");\r
41                 TiXmlElement *el=new TiXmlElement(name);\r
42                 el->LinkEndChild(txt);\r
43                 return el;\r
44         }\r
45 \r
46         /**\r
47                 \brief Creates and returns an element with a CDATA value\r
48         */\r
49         virtual TiXmlElement *XMLCreateCDATAElement(const std::string &name, const std::string &data)\r
50         {\r
51                 TiXmlText *txt=new TiXmlText(data);\r
52                 txt->SetCDATA(true);\r
53                 TiXmlElement *el=new TiXmlElement(name);\r
54                 el->LinkEndChild(txt);\r
55                 return el;\r
56         }\r
57 \r
58         /**\r
59                 \brief Creates and returns a text element\r
60         */\r
61         virtual TiXmlElement *XMLCreateTextElement(const std::string &name, const std::string &data)\r
62         {\r
63                 TiXmlText *txt=new TiXmlText(data);\r
64                 TiXmlElement *el=new TiXmlElement(name);\r
65                 el->LinkEndChild(txt);\r
66                 return el;\r
67         }\r
68 \r
69         virtual TiXmlElement *XMLCreateTextElement(const std::string &name, const long data)\r
70         {\r
71                 std::string datastr;\r
72                 StringFunctions::Convert(data,datastr);\r
73                 return XMLCreateTextElement(name,datastr);\r
74         }\r
75 \r
76         virtual const bool XMLGetBooleanElement(TiXmlElement *parent, const std::string &name)\r
77         {\r
78                 TiXmlHandle hnd(parent);\r
79                 TiXmlText *txt=hnd.FirstChild(name).FirstChild().ToText();\r
80                 if(txt)\r
81                 {\r
82                         if(txt->ValueStr()=="true")\r
83                         {\r
84                                 return true;\r
85                         }\r
86                         else\r
87                         {\r
88                                 return false;\r
89                         }\r
90                 }\r
91                 return false;\r
92         }\r
93         \r
94 };\r
95 \r
96 #endif  // _ifmsxmldocument_\r