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