otsdaq  v2_03_00
XmlDocument.h
1 #ifndef ots_XmlDocument_h
2 #define ots_XmlDocument_h
3 
4 #include <string>
5 #include <vector>
6 #include <xercesc/dom/DOMElement.hpp>
7 #include <xercesc/parsers/XercesDOMParser.hpp>
8 
9 namespace ots
10 {
12 {
13  public:
14  XmlDocument(std::string rootName = "ROOT");
15  XmlDocument(const XmlDocument& doc);
16  XmlDocument& operator=(const XmlDocument& doc);
17  ~XmlDocument(void);
18 
19  xercesc::DOMElement* addTextElementToParent(std::string childName,
20  std::string childText,
21  xercesc::DOMElement* parent);
22  xercesc::DOMElement* addTextElementToParent(std::string childName,
23  std::string childText,
24  std::string parentName,
25  unsigned int parentIndex = 0);
26 
27  void saveXmlDocument(std::string filePath);
28  void recursiveRemoveChild(
29  xercesc::DOMElement* childEl,
30  xercesc::DOMElement* parentEl); // remove entire element
31  // and sub tree, recursively
32 
33  bool loadXmlDocument(std::string filePath);
34 
35  void outputXmlDocument(std::ostringstream* out, bool dispStdOut = false);
36 
37  protected:
38  void copyDocument(const xercesc::DOMDocument* toCopy, xercesc::DOMDocument* copy);
39  void recursiveElementCopy(const xercesc::DOMElement* toCopy,
40  xercesc::DOMElement* copy);
41  void initDocument(void);
42  void initPlatform(void);
43  void terminatePlatform(void);
44  void recursiveOutputXmlDocument(xercesc::DOMElement* currEl,
45  std::ostringstream* out,
46  bool dispStdOut = false,
47  std::string tabStr = "");
48 
49  // unsigned int addElementToParent (std::string field, std::string
50  // value, xercesc::DOMElement *parentEl, bool verbose=false); void
51  // recursiveAddElementToParent (xercesc::DOMElement *currEl, xercesc::DOMElement
52  //*parentEl);
53  // std::string recursiveFindElement (xercesc::DOMElement *currEl,
54  // const std::string field, const unsigned int occurance, unsigned int &count);
55  // void recursiveFindAllElements (xercesc::DOMElement *currEl,
56  // const std::string field,std::vector<std::string> *retVec);
57  std::string escapeString(std::string inString, bool allowWhiteSpace = false);
58 
59  xercesc::DOMImplementation* theImplementation_;
60  xercesc::DOMDocument* theDocument_;
61  xercesc::DOMElement* rootElement_;
62 
63  const std::string rootTagName_;
64 };
65 
66 } // namespace ots
67 
68 #endif // ots_XmlDocument_h