File indexing completed on 2023-03-17 10:51:53
0001 #include "DetectorDescription/RegressionTest/src/SaxToDom2.h"
0002 #include "DetectorDescription/RegressionTest/src/TagName.h"
0003 #include <xercesc/util/XMLString.hpp>
0004
0005 #include <iostream>
0006 #include <map>
0007 #include <string>
0008
0009 using namespace std;
0010
0011 XERCES_CPP_NAMESPACE_USE
0012
0013 SaxToDom2::SaxToDom2() {
0014 AttList2 al;
0015 al[TagName("name")] = TagName("myTinyDomTest");
0016 Node2 nm(TagName("TinyDom2"), al);
0017 parent_.emplace_back(nm);
0018 }
0019
0020 SaxToDom2::~SaxToDom2() {}
0021
0022 const TinyDom2& SaxToDom2::dom() const { return dom_; }
0023
0024 void SaxToDom2::startElement(const XMLCh* const uri,
0025 const XMLCh* const name,
0026 const XMLCh* const qname,
0027 const Attributes& atts) {
0028 char* strx = XMLString::transcode(name);
0029 AttList2 al;
0030
0031 for (unsigned int i = 0; i < atts.getLength(); ++i) {
0032 char* aname = XMLString::transcode(atts.getLocalName(i));
0033 char* value = XMLString::transcode(atts.getValue(i));
0034 al[TagName(aname)] = TagName(value);
0035 XMLString::release(&aname);
0036 XMLString::release(&value);
0037 }
0038
0039
0040 Node2 nm(TagName(strx), al);
0041 Node2 par = parent_.back();
0042 dom_.addEdge(par, nm, AnotherDummy2());
0043
0044 parent_.emplace_back(nm);
0045 XMLString::release(&strx);
0046 }
0047
0048 void SaxToDom2::endElement(const XMLCh* const uri, const XMLCh* const name, const XMLCh* const qname) {
0049 parent_.pop_back();
0050 }
0051
0052
0053 void SaxToDom2::error(const SAXParseException& e) {
0054 char* id = XMLString::transcode(e.getSystemId());
0055 char* message = XMLString::transcode(e.getMessage());
0056 cerr << "\nError at file " << id << ", line " << e.getLineNumber() << ", char " << e.getColumnNumber()
0057 << "\n Message: " << message << endl;
0058 XMLString::release(&id);
0059 XMLString::release(&message);
0060 }