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