SUMO - Simulation of Urban MObility
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
XMLSubSys Class Reference

Utility methods for initialising, closing and using the XML-subsystem. More...

#include <XMLSubSys.h>

Static Public Member Functions

static void close ()
 Closes the xml-subsystem. More...
 
static SUMOSAXReadergetSAXReader (SUMOSAXHandler &handler)
 Builds a reader and assigns the handler to it. More...
 
static void init ()
 Initialises the xml-subsystem. More...
 
static bool runParser (GenericSAXHandler &handler, const std::string &file)
 Runs the given handler on the given file; returns if everything's ok. More...
 
static void setHandler (GenericSAXHandler &handler)
 Sets the given handler for the default reader. More...
 
static void setValidation (bool enableValidation)
 Enables or disables validation. More...
 

Static Private Attributes

static bool myEnableValidation
 Information whether built reader/parser shall validate XML-documents against schemata. More...
 
static unsigned int myNextFreeReader
 Information whether the reader is parsing. More...
 
static std::vector
< SUMOSAXReader * > 
myReaders
 The XML Readers used for repeated parsing. More...
 

Detailed Description

Utility methods for initialising, closing and using the XML-subsystem.

The Xerces-parsers need an initialisation and should also be closed.

As we use xerces for both the input files and the configuration we would have to check whether the system was initialised before. Instead, we call XMLSubSys::init(bool) once at the beginning of our application and XMLSubSys::close() at the end.

Closing and initialising the XML subsystem is necessary. Still, we never encountered any problems with it. Once, after some modifications, SUMO crashed when closing the XML sub system. The reason was a memory leak within the microsim-module. On initialisation, a SAX2XMLReader is built which can be used during later process. It is destroyed when the subsystem is closed.

In addition to initialisation and shutdown, this module allows to build SAXReaders and/or running a given handler on a given file without dealing with the reader at all.

Todo:
make schema checking optional

Definition at line 72 of file XMLSubSys.h.

Member Function Documentation

void XMLSubSys::close ( )
static

Closes the xml-subsystem.

Deletes the built reader and calls XMLPlatformUtils::Terminate();

Definition at line 74 of file XMLSubSys.cpp.

References myReaders.

Referenced by SystemFrame::close().

SUMOSAXReader * XMLSubSys::getSAXReader ( SUMOSAXHandler handler)
static

Builds a reader and assigns the handler to it.

Tries to build a SAX2XMLReader using "getSAXReader()". If this fails, 0 is returned. Otherwise, the given handler is assigned to the reader as the current DefaultHandler and ErrorHandler.

Parameters
[in]handlerThe handler to assign to the built reader
Returns
The built Xerces-SAX-reader, 0 if something failed
See Also
getSAXReader()

Definition at line 84 of file XMLSubSys.cpp.

References myEnableValidation.

Referenced by GUISettingsHandler::GUISettingsHandler(), PCNetProjectionLoader::loadIfSet(), MSRouteLoader::MSRouteLoader(), MSTriggeredXMLReader::myInit(), and ROTypedXMLRoutesLoader::ROTypedXMLRoutesLoader().

void XMLSubSys::init ( )
static

Initialises the xml-subsystem.

Calls XMLPlatformUtils::Initialize(). If this fails, the exception is caught and its content is reported using a ProcessError.

Exceptions
ProcessErrorIf the initialisation fails

Definition at line 57 of file XMLSubSys.cpp.

References TplConvert::_2str(), and myNextFreeReader.

Referenced by main().

bool XMLSubSys::runParser ( GenericSAXHandler handler,
const std::string &  file 
)
static

Runs the given handler on the given file; returns if everything's ok.

Uses the reader built on init() which is stored in myReader to parse the given file.

All exceptions are catched and reported to the error-instance of the MsgHandler. Also, if the reader could not be built, this is reported.

The method returns true if everything went ok. This means, that the reader could be built, no exception was caught, and nothing was reported to the error-instance of the MsgHandler.

Parameters
[in]handlerThe handler to assign to the built reader
[in]fileThe file to run the parser at
Returns
true if the parsing was done without errors, false otherwise (error was printed)

Definition at line 96 of file XMLSubSys.cpp.

References MsgHandler::getErrorInstance(), GenericSAXHandler::getFileName(), myEnableValidation, myNextFreeReader, myReaders, GenericSAXHandler::setFileName(), MsgHandler::wasInformed(), and WRITE_ERROR.

Referenced by NIImporter_SUMO::_loadNetwork(), NLBuilder::build(), GUISettingsHandler::GUISettingsHandler(), AGActivityGen::importInfoCity(), NLBuilder::load(), NIImporter_OpenStreetMap::load(), loadDistricts(), PCLoaderOSM::loadIfSet(), PCLoaderXML::loadIfSet(), loadJTRDefinitions(), loadNet(), ROLoader::loadNet(), NIImporter_ITSUMO::loadNetwork(), NIImporter_MATSim::loadNetwork(), NIImporter_OpenDrive::loadNetwork(), ROLoader::loadWeights(), NILoader::loadXMLType(), main(), MSLaneSpeedTrigger::MSLaneSpeedTrigger(), MSTriggeredRerouter::MSTriggeredRerouter(), readDetectors(), RORDGenerator_ODAmounts::RORDGenerator_ODAmounts(), and GenericSAXHandler::startElement().

void XMLSubSys::setHandler ( GenericSAXHandler handler)
static

Sets the given handler for the default reader.

Uses the reader built on init() which is stored in myReader.

Parameters
[in]handlerThe handler to assign to the built reader

Definition at line 90 of file XMLSubSys.cpp.

References myNextFreeReader, and myReaders.

Referenced by GenericSAXHandler::endElement(), and GenericSAXHandler::registerParent().

void XMLSubSys::setValidation ( bool  enableValidation)
static

Enables or disables validation.

The setting is only valid for parsers created after the call. Existing parsers are not adapted.

Parameters
[in]enableValidationWhether validation of XML-documents against schemata shall be enabled

Definition at line 68 of file XMLSubSys.cpp.

References myEnableValidation.

Referenced by main().

Field Documentation

bool XMLSubSys::myEnableValidation
staticprivate

Information whether built reader/parser shall validate XML-documents against schemata.

Definition at line 156 of file XMLSubSys.h.

Referenced by getSAXReader(), runParser(), and setValidation().

unsigned int XMLSubSys::myNextFreeReader
staticprivate

Information whether the reader is parsing.

Definition at line 153 of file XMLSubSys.h.

Referenced by init(), runParser(), and setHandler().

std::vector< SUMOSAXReader * > XMLSubSys::myReaders
staticprivate

The XML Readers used for repeated parsing.

Definition at line 150 of file XMLSubSys.h.

Referenced by close(), runParser(), and setHandler().


The documentation for this class was generated from the following files: