42 const std::string& file,
const std::string& expectedRoot)
43 : myParentHandler(nullptr), myParentIndicator(
SUMO_TAG_NOTHING), myFileName(file), myExpectedRoot(expectedRoot), myRootSeen(false) {
45 while (tags[i].key != terminatorTag) {
46 myTagMap.insert(TagMap::value_type(tags[i].str, tags[i].key));
50 while (attrs[i].key != terminatorAttr) {
51 int key = attrs[i].key;
85 int len = (int)name.length();
86 XMLCh* ret =
new XMLCh[len + 1];
88 for (; i < len; i++) {
89 ret[i] = (XMLCh) name[i];
99 const XMLCh*
const qname,
100 const XERCES_CPP_NAMESPACE::Attributes& attrs) {
124 const XMLCh*
const qname) {
133 char* buf =
new char[len + 1];
145 }
catch (std::runtime_error&) {
172 const XERCES3_SIZE_t length) {
179 TagMap::const_iterator i =
myTagMap.find(tag);
189 std::ostringstream buf;
191 buf << pMsg << std::endl;
192 buf <<
" In file '" <<
getFileName() <<
"'" << std::endl;
193 buf <<
" At line/column " << exception.getLineNumber() + 1
194 <<
'/' << exception.getColumnNumber() <<
"." << std::endl;
195 XERCES_CPP_NAMESPACE::XMLString::release(&pMsg);
#define WRITE_WARNING(msg)
@ SUMO_TAG_NOTHING
invalid tag
std::string transcode(const XMLCh *const qname)
static bool isAbsolute(const std::string &path)
Returns the information whether the given path is absolute.
static std::string getConfigurationRelative(const std::string &configPath, const std::string &path)
Returns the second path as a relative path to the first file.
A handler which converts occuring elements and attributes into enums.
void registerParent(const int tag, GenericSAXHandler *handler)
Assigning a parent handler which is enabled when the specified tag is closed.
virtual void myCharacters(int element, const std::string &chars)
Callback method for characters to implement by derived classes.
std::string buildErrorMessage(const XERCES_CPP_NAMESPACE::SAXParseException &exception)
Builds an error message.
int convertTag(const std::string &tag) const
Converts a tag from its string into its numerical representation.
XMLCh * convert(const std::string &name) const
converts from c++-string into unicode
void startElement(const XMLCh *const uri, const XMLCh *const localname, const XMLCh *const qname, const XERCES_CPP_NAMESPACE::Attributes &attrs)
The inherited method called when a new tag opens.
GenericSAXHandler(StringBijection< int >::Entry *tags, int terminatorTag, StringBijection< int >::Entry *attrs, int terminatorAttr, const std::string &file, const std::string &expectedRoot="")
Constructor.
std::string myFileName
The name of the currently parsed file.
void error(const XERCES_CPP_NAMESPACE::SAXParseException &exception)
Handler for XML-errors.
GenericSAXHandler * myParentHandler
The handler to give control back to.
void setFileName(const std::string &name)
Sets the current file name.
int myParentIndicator
The tag indicating that control should be given back.
void characters(const XMLCh *const chars, const XERCES3_SIZE_t length)
The inherited method called when characters occurred.
virtual ~GenericSAXHandler()
Destructor.
virtual void myEndElement(int element)
Callback method for a closing tag to implement by derived classes.
void warning(const XERCES_CPP_NAMESPACE::SAXParseException &exception)
Handler for XML-warnings.
std::string myExpectedRoot
The root element to expect, empty string disables the check.
virtual void myStartElement(int element, const SUMOSAXAttributes &attrs)
Callback method for an opening tag to implement by derived classes.
std::vector< std::string > myCharactersVector
A list of character strings obtained so far to build the complete characters string at the end.
void fatalError(const XERCES_CPP_NAMESPACE::SAXParseException &exception)
Handler for XML-errors.
bool myRootSeen
whether the reader has already seen the root element
const std::string & getFileName() const
returns the current file name
std::vector< std::string > myPredefinedTagsMML
the map from ids to their string representation
void endElement(const XMLCh *const uri, const XMLCh *const localname, const XMLCh *const qname)
The inherited method called when a tag is being closed.
Encapsulated SAX-Attributes.
Encapsulated Xerces-SAX-attributes.
std::string getString(int id) const
Returns the string-value of the named (by its enum-value) attribute.
static std::string transcode(const XMLCh *const data)
converts a 0-terminated XMLCh* array (usually UTF-16, stemming from Xerces) into std::string in UTF-8
static void setHandler(GenericSAXHandler &handler)
Sets the given handler for the default reader.
static bool runParser(GenericSAXHandler &handler, const std::string &file, const bool isNet=false, const bool isRoute=false)
Runs the given handler on the given file; returns if everything's ok.