8 #include "xercesc/util/PlatformUtils.hpp" 15 char *
c = xercesc::XMLString::transcode(toTranscode);
23 XMLCh* buff = XMLString::transcode(temp.c_str());
55 XMLPlatformUtils::Initialize();
57 kTagHw = XMLString::transcode(
"system");
58 kTagAlgo = XMLString::transcode(
"algo");
60 kTagDb = XMLString::transcode(
"db");
61 kTagKey = XMLString::transcode(
"key");
62 kTagLoad = XMLString::transcode(
"load");
64 kTagParam = XMLString::transcode(
"param");
65 kTagMask = XMLString::transcode(
"mask");
70 kTagTypes = XMLString::transcode(
"types");
71 kTagRow = XMLString::transcode(
"row");
73 kTagRole = XMLString::transcode(
"role");
74 kTagCrate = XMLString::transcode(
"crate");
75 kTagSlot = XMLString::transcode(
"slot");
76 kTagDaqTtc = XMLString::transcode(
"daqttc-mgr");
77 kAttrId = XMLString::transcode(
"id");
79 kAttrDelim = XMLString::transcode(
"delimiter");
83 parser_ =
new XercesDOMParser();
84 parser_->setValidationScheme(XercesDOMParser::Val_Auto);
85 parser_->setDoNamespaces(
false);
118 XMLPlatformUtils::Initialize();
120 kTagHw = XMLString::transcode(
"system");
121 kTagAlgo = XMLString::transcode(
"algo");
123 kTagDb = XMLString::transcode(
"db");
124 kTagKey = XMLString::transcode(
"key");
125 kTagLoad = XMLString::transcode(
"load");
127 kTagParam = XMLString::transcode(
"param");
128 kTagMask = XMLString::transcode(
"mask");
133 kTagTypes = XMLString::transcode(
"types");
134 kTagRow = XMLString::transcode(
"row");
136 kTagRole = XMLString::transcode(
"role");
137 kTagCrate = XMLString::transcode(
"crate");
138 kTagSlot = XMLString::transcode(
"slot");
139 kTagDaqTtc = XMLString::transcode(
"daqttc-mgr");
140 kAttrId = XMLString::transcode(
"id");
141 kAttrType = XMLString::transcode(
"type");
142 kAttrDelim = XMLString::transcode(
"delimiter");
153 XMLPlatformUtils::Terminate();
159 MemBufInputSource xmlstr_buf((
const XMLByte*)(
str.c_str()),
str.size(),
"xmlstrbuf");
168 MemBufInputSource xmlstr_buf((
const XMLByte*)(str.c_str()), str.size(),
"xmlstrbuf");
181 edm::LogError(
"XmlConfigReader") <<
"Could not parse file " << fName <<
"\n";
194 edm::LogError(
"XmlConfigReader") <<
"Could not parse file " << fName <<
"\n";
203 DOMElement* rootElement =
doc_->getDocumentElement();
205 if (rootElement->getNodeType() == DOMNode::ELEMENT_NODE) {
209 std::cout <<
"No xml root element found" << std::endl;
235 DOMNodeList* processors = element->getElementsByTagName(
kTagProcessor);
236 XMLSize_t nodeCount = processors->getLength();
237 for (XMLSize_t
xx = 0;
xx < nodeCount; ++
xx) {
238 DOMNode* currentNode = processors->item(
xx);
239 if (currentNode->getNodeType() && currentNode->getNodeType() == DOMNode::ELEMENT_NODE) {
240 DOMElement* currentElement =
static_cast<DOMElement*
>( currentNode );
243 DOMNodeList* roles = currentElement->getElementsByTagName(
kTagRole);
245 for (XMLSize_t
i = 0;
i < roles->getLength(); ++
i) {
246 DOMNodeList* roleChilds = roles->item(
i)->getChildNodes();
247 for (XMLSize_t j = 0; j < roleChilds->getLength(); ++j) {
248 if (roleChilds->item(j)->getNodeType() == DOMNode::TEXT_NODE) {
254 DOMNodeList* crates = currentElement->getElementsByTagName(
kTagCrate);
256 for (XMLSize_t
i = 0;
i < crates->getLength(); ++
i) {
257 DOMNodeList* crateChilds = crates->item(
i)->getChildNodes();
258 for (XMLSize_t j = 0; j < crateChilds->getLength(); ++j) {
259 if (crateChilds->item(j)->getNodeType() == DOMNode::TEXT_NODE) {
265 DOMNodeList* slots = currentElement->getElementsByTagName(
kTagSlot);
267 for (XMLSize_t
i = 0;
i < slots->getLength(); ++
i) {
268 DOMNodeList* slotChilds = slots->item(
i)->getChildNodes();
269 for (XMLSize_t j = 0; j < slotChilds->getLength(); ++j) {
270 if (slotChilds->item(j)->getNodeType() == DOMNode::TEXT_NODE) {
280 DOMNodeList* daqttcs = element->getElementsByTagName(
kTagDaqTtc);
281 nodeCount = daqttcs->getLength();
282 for (XMLSize_t
xx = 0;
xx < nodeCount; ++
xx) {
283 DOMNode* currentNode = daqttcs->item(
xx);
284 if (currentNode->getNodeType() && currentNode->getNodeType() == DOMNode::ELEMENT_NODE) {
285 DOMElement* currentElement =
static_cast<DOMElement*
>( currentNode );
288 DOMNodeList* roles = currentElement->getElementsByTagName(
kTagRole);
290 for (XMLSize_t
i = 0;
i < roles->getLength(); ++
i) {
291 DOMNodeList* roleChilds = roles->item(
i)->getChildNodes();
292 for (XMLSize_t j = 0; j < roleChilds->getLength(); ++j) {
293 if (roleChilds->item(j)->getNodeType() == DOMNode::TEXT_NODE) {
299 DOMNodeList* crates = currentElement->getElementsByTagName(
kTagCrate);
301 for (XMLSize_t
i = 0;
i < crates->getLength(); ++
i) {
302 DOMNodeList* crateChilds = crates->item(
i)->getChildNodes();
303 for (XMLSize_t j = 0; j < crateChilds->getLength(); ++j) {
304 if (crateChilds->item(j)->getNodeType() == DOMNode::TEXT_NODE) {
313 DOMNodeList* exclBoards = element->getElementsByTagName(
kTagExclBoards);
314 for (XMLSize_t
xx = 0;
xx < exclBoards->getLength(); ++
xx) {
315 DOMElement* exclBoardElem =
static_cast<DOMElement*
>(exclBoards->item(
xx));
317 for (DOMElement*
elem = static_cast<DOMElement*>(exclBoardElem->getFirstChild());
elem;
elem =
static_cast<DOMElement*
>(
elem->getNextSibling())) {
318 if (
elem->getNodeType() == DOMNode::ELEMENT_NODE) {
333 if (systemId ==
"") {
337 DOMNodeList* contextElements = element->getElementsByTagName(
kTagContext);
339 for (XMLSize_t
i = 0;
i < contextElements->getLength(); ++
i) {
340 DOMElement* contextElement =
static_cast<DOMElement*
>(contextElements->item(
i));
343 for (DOMElement*
elem = static_cast<DOMElement*>(contextElement->getFirstChild());
elem;
elem =
static_cast<DOMElement*
>(
elem->getNextSibling())) {
344 if (
elem->getNodeType() == DOMNode::ELEMENT_NODE) {
347 char *
id = xercesc::XMLString::transcode(
elem->getAttribute(
kAttrId) );
357 for (XMLSize_t j = 0; j < colElements->getLength(); ++j) {
358 DOMNodeList* colChilds = colElements->item(j)->getChildNodes();
359 for (XMLSize_t
k = 0;
k < colChilds->getLength(); ++
k) {
360 if (colChilds->item(
k)->getNodeType() == DOMNode::TEXT_NODE) {
363 char *
cStr = xercesc::XMLString::transcode( colChilds->item(
k)->getNodeValue() );
372 DOMNodeList* colTypesElements =
elem->getElementsByTagName(
kTagTypes);
373 for (XMLSize_t j = 0; j < colTypesElements->getLength(); ++j) {
374 DOMNodeList* colTypesChilds = colTypesElements->item(j)->getChildNodes();
375 for (XMLSize_t
k = 0;
k < colTypesChilds->getLength(); ++
k) {
376 if (colTypesChilds->item(
k)->getNodeType() == DOMNode::TEXT_NODE) {
379 char *tStr = xercesc::XMLString::transcode( colTypesChilds->item(
k)->getNodeValue() );
387 std::vector<std::string> rowStrs;
388 DOMNodeList* rowElements =
elem->getElementsByTagName(
kTagRow);
389 for (XMLSize_t j = 0; j < rowElements->getLength(); ++j) {
390 DOMNodeList* rowChilds = rowElements->item(j)->getChildNodes();
391 for (XMLSize_t
k = 0;
k < rowChilds->getLength(); ++
k) {
392 if (rowChilds->item(
k)->getNodeType() == DOMNode::TEXT_NODE) {
396 char *rStr = xercesc::XMLString::transcode( rowChilds->item(
k)->getNodeValue() );
407 DOMNodeList* valNodes =
elem->getChildNodes();
408 for (XMLSize_t j = 0; j < valNodes->getLength(); ++j) {
409 if (valNodes->item(j)->getNodeType() == DOMNode::TEXT_NODE) {
410 value +=
_toString(valNodes->item(j)->getNodeValue());
429 aTrigSystem.
addMask(
id, contextId);
447 for (DOMElement*
elem = static_cast<DOMElement*>(keyElement->getFirstChild());
elem;
elem =
static_cast<DOMElement*
>(
elem->getNextSibling())) {
448 if (
elem->getNodeType() == DOMNode::ELEMENT_NODE) {
455 std::cout <<
"Key not found: " << key << std::endl;
462 DOMElement* rootElement =
doc_->getDocumentElement();
464 DOMNodeList* keyElements = rootElement->getElementsByTagName(
kTagKey);
466 for (XMLSize_t
i = 0;
i < keyElements->getLength(); ++
i) {
467 DOMElement* keyElement =
static_cast<DOMElement*
>(keyElements->item(
i));
481 DOMNodeList* loadElements = keyElement->getElementsByTagName(
kTagLoad);
482 for (XMLSize_t
i = 0;
i < loadElements->getLength(); ++
i) {
483 DOMElement* loadElement =
static_cast<DOMElement*
>(loadElements->item(
i));
485 if (fileName.find(
"/") != 0) {
489 pos = topPath.find_last_of(
"/");
490 if (pos != std::string::npos) {
491 topDir = topPath.substr(0, pos+1);
496 DOMDocument* subDoc =
nullptr;
508 DOMElement* subDocRootElement = subDoc->getDocumentElement();
511 DOMNode* importedNode =
doc_->importNode(subDocRootElement,
true);
512 parentNode->appendChild(importedNode);
518 0, 0, 0, 0, 0, 0, 0, 0, 0, 1,
519 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,
520 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
521 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
522 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
523 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
524 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
525 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
526 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
527 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
528 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
529 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
530 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
531 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
532 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
533 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
534 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
535 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
536 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
537 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
538 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
539 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
540 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
541 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
542 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
547 size_t alphanumBegin = 0, alphanumEnd = strlen(str)-1;
552 str[alphanumEnd+1] =
'\0';
553 return str + alphanumBegin;
558 std::size_t alphanumBegin = str.find_first_not_of(
"\n\t ");
559 std::size_t alphanumEnd = str.find_last_not_of(
"\n\t ");
560 if (alphanumBegin != std::string::npos) {
561 if (alphanumEnd != std::string::npos) {
562 str = str.substr(alphanumBegin, alphanumEnd - alphanumBegin + 1);
564 str = str.substr(alphanumBegin);
void disableDaqProc(const std::string &daqProc)
void readDOMFromFile(const std::string &fName, xercesc::DOMDocument *&doc)
const std::string kTypeTable
void readHwDescription(const xercesc::DOMElement *element, TrigSystem &aTrigSystem, const std::string &sysId="")
const XMLCh * kTagExclude
void readRootElement(TrigSystem &aTrigSystem, const std::string &sysId="")
const char XmlConfigReader_reject_symbols[256]
void addMask(const std::string &id, const std::string &procRole)
void addDaqRole(const std::string &daq, const std::string &role)
void addSetting(const std::string &type, const std::string &id, const std::string &value, const std::string &procRole, const std::string &delim="")
void addProcRole(const std::string &processor, const std::string &role)
const XMLCh * kTagExclBoards
const XMLCh * kTagContext
void buildGlobalDoc(const std::string &key, const std::string &topPath="")
ZStr< char > cStr(XMLCh const *str)
void addProcCrate(const std::string &processor, const std::string &crate)
xercesc::XercesDOMParser * parser_
void readElement(const xercesc::DOMElement *element, TrigSystem &aTrigSystem, const std::string &sysId="")
void readContexts(const std::string &key, const std::string &sysId, TrigSystem &aTrigSystem)
def elem(elemtype, innerHTML='', html_class='', kwargs)
const XMLCh * kTagDisable
void addDaqCrate(const std::string &daq, const std::string &crate)
bool equals(const edm::RefToBase< Jet > &j1, const edm::RefToBase< Jet > &j2)
xercesc::DOMDocument * doc_
const XMLCh * kAttrModule
void addProcSlot(const std::string &processor, const std::string &slot)
const XMLCh * kTagRunSettings
void pruneString(std::string &str)
const XMLCh * kTagProcessor
const XMLCh * kTagColumns
void readDOMFromString(const std::string &str, xercesc::DOMDocument *&doc)
xercesc::DOMElement * getKeyElement(const std::string &key)
void appendNodesFromSubDoc(xercesc::DOMNode *parentNode, xercesc::DOMDocument *subDoc)
void setSystemId(const std::string id)
XMLCh * _toDOMS(std::string temp)
std::string _toString(XMLCh const *toTranscode)
void readContext(const xercesc::DOMElement *element, const std::string &sysId, TrigSystem &aTrigSystem)
void addSettingTable(const std::string &id, const std::string &columns, const std::string &types, const std::vector< std::string > &rows, const std::string &procRole, const std::string &delim)