$treeview $search $mathjax $extrastylesheet
otsdaq
v2_03_00
$projectbrief
|
$projectbrief
|
$searchbox |
00001 #ifndef ots_XmlDocument_h 00002 #define ots_XmlDocument_h 00003 00004 #include <string> 00005 #include <vector> 00006 #include <xercesc/dom/DOMElement.hpp> 00007 #include <xercesc/parsers/XercesDOMParser.hpp> 00008 00009 namespace ots 00010 { 00011 class XmlDocument 00012 { 00013 public: 00014 XmlDocument(std::string rootName = "ROOT"); 00015 XmlDocument(const XmlDocument& doc); 00016 XmlDocument& operator=(const XmlDocument& doc); 00017 ~XmlDocument(void); 00018 00019 xercesc::DOMElement* addTextElementToParent(std::string childName, 00020 std::string childText, 00021 xercesc::DOMElement* parent); 00022 xercesc::DOMElement* addTextElementToParent(std::string childName, 00023 std::string childText, 00024 std::string parentName, 00025 unsigned int parentIndex = 0); 00026 00027 void saveXmlDocument(std::string filePath); 00028 void recursiveRemoveChild( 00029 xercesc::DOMElement* childEl, 00030 xercesc::DOMElement* parentEl); // remove entire element 00031 // and sub tree, recursively 00032 00033 bool loadXmlDocument(std::string filePath); 00034 00035 void outputXmlDocument(std::ostringstream* out, bool dispStdOut = false); 00036 00037 protected: 00038 void copyDocument(const xercesc::DOMDocument* toCopy, xercesc::DOMDocument* copy); 00039 void recursiveElementCopy(const xercesc::DOMElement* toCopy, 00040 xercesc::DOMElement* copy); 00041 void initDocument(void); 00042 void initPlatform(void); 00043 void terminatePlatform(void); 00044 void recursiveOutputXmlDocument(xercesc::DOMElement* currEl, 00045 std::ostringstream* out, 00046 bool dispStdOut = false, 00047 std::string tabStr = ""); 00048 00049 // unsigned int addElementToParent (std::string field, std::string 00050 // value, xercesc::DOMElement *parentEl, bool verbose=false); void 00051 // recursiveAddElementToParent (xercesc::DOMElement *currEl, xercesc::DOMElement 00052 //*parentEl); 00053 // std::string recursiveFindElement (xercesc::DOMElement *currEl, 00054 // const std::string field, const unsigned int occurance, unsigned int &count); 00055 // void recursiveFindAllElements (xercesc::DOMElement *currEl, 00056 // const std::string field,std::vector<std::string> *retVec); 00057 std::string escapeString(std::string inString, bool allowWhiteSpace = false); 00058 00059 xercesc::DOMImplementation* theImplementation_; 00060 xercesc::DOMDocument* theDocument_; 00061 xercesc::DOMElement* rootElement_; 00062 00063 const std::string rootTagName_; 00064 }; 00065 00066 } // namespace ots 00067 00068 #endif // ots_XmlDocument_h