1 #ifndef ots_HttpXmlDocument_h
2 #define ots_HttpXmlDocument_h
4 #include "otsdaq/XmlUtilities/XmlDocument.h"
8 #include <xercesc/dom/DOMElement.hpp>
9 #include <xercesc/parsers/XercesDOMParser.hpp>
17 HttpXmlDocument (std::string cookieCode =
"", std::string displayName =
"");
22 void setHeader (std::string cookieCode =
"", std::string displayName =
"");
23 xercesc::DOMElement* getRootDataElement (
void ) {
return dataElement_; }
24 xercesc::DOMElement* addTextElementToData (
const std::string & field ,
const std::string & value =
"" );
26 xercesc::DOMElement* addNumberElementToData (
const std::string & field ,
const T & value ) {
return addTextElementToData(field,std::to_string(value)); }
27 xercesc::DOMElement* addBinaryStringToData (
const std::string & field ,
const std::string & binary );
29 xercesc::DOMElement* addNumberElementToParent (
const std::string & field ,
const T & value, xercesc::DOMElement* parent) {
return addTextElementToParent(field,std::to_string(value),parent); }
31 std::string
getMatchingValue (
const std::string & field ,
const unsigned int occurance = 0 );
33 xercesc::DOMElement*
getMatchingElement (
const std::string & field ,
const unsigned int occurance = 0 );
34 xercesc::DOMElement*
getMatchingElementInSubtree ( xercesc::DOMElement * currEl ,
const std::string & field,
const unsigned int occurance = 0 );
36 void outputXmlDocument ( std::ostringstream * out ,
bool dispStdOut =
false,
bool allowWhiteSpace =
false );
41 std::stringstream dataSs_ ;
43 void recursiveAddElementToParent ( xercesc::DOMElement * child , xercesc::DOMElement * parent ,
bool html =
false );
44 void recursiveFindAllElements ( xercesc::DOMElement * currEl ,
const std::string & field , std::vector<std::string> * retVec );
45 void recursiveFindAllElements ( xercesc::DOMElement * currEl ,
const std::string & field , std::vector<xercesc::DOMElement*> * retVec );
46 void recursiveOutputXmlDocument ( xercesc::DOMElement * currEl , std::ostringstream * out ,
bool dispStdOut =
false , std::string tabStr =
"" ,
bool allowWhiteSpace =
false);
47 void recursiveFixTextFields ( xercesc::DOMElement * currEl );
48 std::string recursiveFindElementValue ( xercesc::DOMElement * currEl ,
const std::string & field ,
const unsigned int occurance ,
unsigned int & count );
49 xercesc::DOMElement* recursiveFindElement ( xercesc::DOMElement * currEl ,
const std::string & field ,
const unsigned int occurance ,
unsigned int & count );
51 xercesc::DOMElement* headerElement_ ;
52 xercesc::DOMElement* dataElement_ ;
54 const std::string headerTagName_ ;
55 const std::string dataTagName_ ;
56 const std::string cookieCodeTagName_ ;
57 const std::string displayNameTagName_;
xercesc::DOMElement * getMatchingElement(const std::string &field, const unsigned int occurance=0)
void getAllMatchingValues(const std::string &field, std::vector< std::string > &retVec)
void outputXmlDocument(std::ostringstream *out, bool dispStdOut=false, bool allowWhiteSpace=false)
HttpXmlDocument(std::string cookieCode="", std::string displayName="")
xercesc::DOMElement * getMatchingElementInSubtree(xercesc::DOMElement *currEl, const std::string &field, const unsigned int occurance=0)
void copyDataChildren(HttpXmlDocument &document)
void removeDataElement(unsigned int dataChildIndex=0)
default to first child
bool loadXmlDocument(const std::string &filePath)
unsigned int getChildrenCount(xercesc::DOMElement *parent=0)
std::string getMatchingValue(const std::string &field, const unsigned int occurance=0)
void getAllMatchingElements(const std::string &field, std::vector< xercesc::DOMElement * > &retVec)
xercesc::DOMElement * addTextElementToParent(const std::string &childName, const std::string &childText, xercesc::DOMElement *parent)