![]() |
![]() |
#include <CalibrationXML.h>
Public Types | |
typedef XERCES_CPP_NAMESPACE::DOMDocument | DOMDocument |
typedef XERCES_CPP_NAMESPACE::DOMElement | DOMElement |
typedef XERCES_CPP_NAMESPACE::DOMNode | DOMNode |
typedef XERCES_CPP_NAMESPACE::HandlerBase | HandlerBase |
typedef XERCES_CPP_NAMESPACE::XercesDOMParser | XercesDOMParser |
typedef XERCES_CPP_NAMESPACE::XMLPlatformUtils | XMLPlatformUtils |
typedef XERCES_CPP_NAMESPACE::XMLString | XMLString |
Public Member Functions | |
DOMElement * | calibrationDOM () |
CalibrationXML () | |
void | closeFile () |
void | openFile (const std::string &xmlFileName) |
void | saveFile (const std::string &xmlFileName) |
~CalibrationXML () | |
Static Public Member Functions | |
static DOMElement * | addChild (DOMNode *dom, const std::string &name) |
template<class T > | |
static T | readAttribute (DOMElement *dom, const std::string &name) |
template<class T > | |
static void | writeAttribute (DOMElement *dom, const std::string &name, const T &value) |
Private Attributes | |
DOMDocument * | doc |
HandlerBase * | errHandler |
DOMElement * | m_calibrationDOM |
std::string | m_xmlFileName |
XercesDOMParser * | parser |
Definition at line 12 of file CalibrationXML.h.
typedef XERCES_CPP_NAMESPACE::DOMDocument CalibrationXML::DOMDocument |
Definition at line 15 of file CalibrationXML.h.
typedef XERCES_CPP_NAMESPACE::DOMElement CalibrationXML::DOMElement |
Definition at line 16 of file CalibrationXML.h.
typedef XERCES_CPP_NAMESPACE::DOMNode CalibrationXML::DOMNode |
Definition at line 17 of file CalibrationXML.h.
typedef XERCES_CPP_NAMESPACE::HandlerBase CalibrationXML::HandlerBase |
Definition at line 18 of file CalibrationXML.h.
typedef XERCES_CPP_NAMESPACE::XercesDOMParser CalibrationXML::XercesDOMParser |
Definition at line 19 of file CalibrationXML.h.
typedef XERCES_CPP_NAMESPACE::XMLPlatformUtils CalibrationXML::XMLPlatformUtils |
Definition at line 20 of file CalibrationXML.h.
typedef XERCES_CPP_NAMESPACE::XMLString CalibrationXML::XMLString |
Definition at line 21 of file CalibrationXML.h.
XERCES_CPP_NAMESPACE_USE CalibrationXML::CalibrationXML | ( | ) |
Definition at line 22 of file CalibrationXML.cc.
: errHandler(0), parser(0) { }
CalibrationXML::~CalibrationXML | ( | ) |
Definition at line 27 of file CalibrationXML.cc.
References errHandler, and parser.
{ //TODO: delete!!!! if(errHandler) delete errHandler; if(parser) { delete parser; XMLPlatformUtils::Terminate(); } }
DOMElement * CalibrationXML::addChild | ( | DOMNode * | dom, |
const std::string & | name | ||
) | [static] |
Helper static function to add a child in a DOM Element with indentation
Definition at line 123 of file CalibrationXML.cc.
References tablePrinter::indent(), testEve_cfg::level, and AlCaHLTBitMon_QueryRunRegistry::string.
Referenced by CalibratedHistogramXML::write().
{ DOMNode *n1 = dom; int level=0; std::string indent="\n"; while(n1 && level < 100) { level++; indent+=" "; n1 = n1->getParentNode(); } if(dom->getFirstChild()==0) dom->appendChild(dom->getOwnerDocument()->createTextNode(XMLString::transcode(indent.c_str()))); DOMElement * child = (DOMElement *)dom->appendChild(dom->getOwnerDocument()->createElement(XMLString::transcode(name.c_str()))); dom->appendChild(dom->getOwnerDocument()->createTextNode(XMLString::transcode(indent.c_str()))); return child; }
DOMElement* CalibrationXML::calibrationDOM | ( | ) | [inline] |
Return the root DOM Element of the opened XML calibration file
Definition at line 47 of file CalibrationXML.h.
References m_calibrationDOM.
Referenced by AlgorithmCalibration< T, CO >::dom().
{ return m_calibrationDOM;}
void CalibrationXML::closeFile | ( | ) | [inline] |
Definition at line 37 of file CalibrationXML.h.
References errHandler, and parser.
Referenced by AlgorithmCalibration< T, CO >::AlgorithmCalibration().
{ if(errHandler) delete errHandler; if(parser) { delete parser; XMLPlatformUtils::Terminate(); } errHandler=0; parser=0; }
void CalibrationXML::openFile | ( | const std::string & | xmlFileName | ) |
Open an XML file
Definition at line 37 of file CalibrationXML.cc.
References dtNoiseDBValidation_cfg::cerr, doc, alignCSCRings::e, errHandler, m_calibrationDOM, m_xmlFileName, parser, and BuildIsoConfigs::xmlFileName.
Referenced by AlgorithmCalibration< T, CO >::dom().
{ if(errHandler) delete errHandler; if(parser) { delete parser; XMLPlatformUtils::Terminate(); } m_xmlFileName = xmlFileName; // std::cout << "Opening.." << std::endl; // Initialize the XML4C2 system try { XMLPlatformUtils::Initialize(); } catch(const XMLException& toCatch) { std::cerr << "Error during Xerces-c Initialization.\n" << " Exception message:" << XMLString::transcode(toCatch.getMessage()) << std::endl; abort(); //FIXME throw GenTerminate("Error during Xerces-c Initialization."); } parser = new XercesDOMParser; parser->setValidationScheme(XercesDOMParser::Val_Auto); parser->setDoNamespaces(false); parser->setDoSchema(false); parser->setValidationSchemaFullChecking(false); errHandler = new HandlerBase; parser->setErrorHandler(errHandler); parser->setCreateEntityReferenceNodes(false); // Parse the XML file, catching any XML exceptions that might propogate out of it. bool errorsOccured = false; try { edm::LogInfo("XMLCalibration") << "Calibration XML: parsing " << m_xmlFileName.c_str() << std::endl; parser->parse(m_xmlFileName.c_str()); int errorCount = parser->getErrorCount(); if (errorCount > 0) errorsOccured = true; } catch (const XMLException& e) { std::cerr << "A DOM error occured during parsing\n DOMException code: " << (long unsigned int)e.getCode() << std::endl; errorsOccured = true; } catch (...) { std::cerr << "An unknown error occured during parsing\n " << std::endl; errorsOccured = true; } // If the parse was successful, build the structure we want to have if(errorsOccured) { std::cerr << "An error occured during parsing\n" << "Please check your input with SAXCount or a similar tool.\n Exiting!\n" << std::endl; abort(); //FIXME throw GenTerminate("An error occured during parsing\n Please check your input with SAXCount or a similar tool.\n Exiting!\n"); } doc = parser->getDocument(); DOMNode* n1 = doc->getFirstChild(); while(n1) { if (n1->getNodeType() == DOMNode::ELEMENT_NODE ) break; n1 = n1->getNextSibling(); } if(strcmp("Calibration",XMLString::transcode(n1->getNodeName()))) abort(); //FIXME throw GenTerminate("The root element in the XML Calibration file is not a Calibration element.\n This should be forbidden at the DTD level."); else { edm::LogInfo("XMLCalibration") << "Calibration found" ; } m_calibrationDOM = (DOMElement *) n1; }
static T CalibrationXML::readAttribute | ( | DOMElement * | dom, |
const std::string & | name | ||
) | [inline, static] |
Helper static function to read an attribute in a DOM Element
Definition at line 68 of file CalibrationXML.h.
References fetchall_from_DQM_v2::release, and relativeConstraints::value.
{ XMLCh* nameStr = XMLString::transcode(name.c_str()); char * valueStr = XMLString::transcode(dom->getAttribute(nameStr)); std::istringstream buffer(valueStr); T value; buffer >> value; XMLString::release(&nameStr); XMLString::release(&valueStr); return value; }
void CalibrationXML::saveFile | ( | const std::string & | xmlFileName | ) |
Save DOM to file
Definition at line 113 of file CalibrationXML.cc.
References doc.
{ DOMImplementation * theImpl = DOMImplementationRegistry::getDOMImplementation(XMLString::transcode("Core")); DOMWriter * theSerializer = ((DOMImplementation*)theImpl)->createDOMWriter(); theSerializer->canSetFeature(XMLUni::fgDOMWRTFormatPrettyPrint, true); XMLFormatTarget* myFormTarget = new LocalFileFormatTarget(XMLString::transcode(xmlFileName.c_str())); theSerializer->writeNode(myFormTarget, *doc); delete myFormTarget; }
static void CalibrationXML::writeAttribute | ( | DOMElement * | dom, |
const std::string & | name, | ||
const T & | value | ||
) | [inline, static] |
Helper static function to write an attribute in a DOM Element
Definition at line 54 of file CalibrationXML.h.
References fetchall_from_DQM_v2::release, and relativeConstraints::value.
Referenced by CalibratedHistogramXML::write().
{ std::ostringstream buffer; buffer << value; XMLCh * nameStr = XMLString::transcode(name.c_str()); XMLCh * valueStr = XMLString::transcode(buffer.str().c_str()); dom->setAttribute(nameStr, valueStr ); XMLString::release(&nameStr); XMLString::release(&valueStr); }
DOMDocument* CalibrationXML::doc [private] |
Definition at line 88 of file CalibrationXML.h.
Referenced by openFile(), and saveFile().
HandlerBase* CalibrationXML::errHandler [private] |
Definition at line 89 of file CalibrationXML.h.
Referenced by closeFile(), openFile(), and ~CalibrationXML().
DOMElement* CalibrationXML::m_calibrationDOM [private] |
Definition at line 87 of file CalibrationXML.h.
Referenced by calibrationDOM(), and openFile().
std::string CalibrationXML::m_xmlFileName [private] |
Definition at line 86 of file CalibrationXML.h.
Referenced by openFile().
XercesDOMParser* CalibrationXML::parser [private] |
Definition at line 90 of file CalibrationXML.h.
Referenced by closeFile(), openFile(), and ~CalibrationXML().