Eclipse SUMO - Simulation of Urban MObility
SUMOSAXReader Class Reference

SAX-reader encapsulation containing binary reader. More...

#include <SUMOSAXReader.h>

Collaboration diagram for SUMOSAXReader:
[legend]

Data Structures

class  LocalSchemaResolver
 

Public Member Functions

void parse (std::string systemID)
 Parse the given file completely by calling parse of myXMLReader. More...
 
bool parseFirst (std::string systemID)
 Start parsing the given file using parseFirst of myXMLReader. More...
 
bool parseNext ()
 Continue a progressive parse started by parseFirst. More...
 
bool parseSection (int element)
 Continue a progressive parse started by parseFirst until the given element is encountered. More...
 
void parseString (std::string content)
 Parse XML from the given string. More...
 
void setHandler (GenericSAXHandler &handler)
 Sets the given handler as content and error handler for the reader. More...
 
void setValidation (std::string validationScheme="")
 Sets a new validation scheme and applies the validation settings to the XML reader. More...
 
 SUMOSAXReader (GenericSAXHandler &handler, const std::string &validationScheme, XERCES_CPP_NAMESPACE::XMLGrammarPool *grammarPool)
 Constructor. More...
 
 ~SUMOSAXReader ()
 Destructor. More...
 

Private Member Functions

void ensureSAXReader ()
 Builds a reader, if needed. More...
 
const SUMOSAXReaderoperator= (const SUMOSAXReader &s)
 invalidated assignment operator More...
 
 SUMOSAXReader (const SUMOSAXReader &s)
 invalidated copy constructor More...
 

Private Attributes

XERCES_CPP_NAMESPACE::XMLGrammarPool * myGrammarPool
 Schema cache to be used for grammars which are not declared. More...
 
GenericSAXHandlermyHandler
 
std::unique_ptr< IStreamInputSourcemyInputStream
 
std::unique_ptr< std::istream > myIStream
 
LocalSchemaResolver myLocalResolver
 
std::pair< int, SUMOSAXAttributes * > myNextSection
 
LocalSchemaResolver myNoOpResolver
 
LocalSchemaResolver mySchemaResolver
 
XERCES_CPP_NAMESPACE::XMLPScanToken myToken
 
std::string myValidationScheme
 Information whether built reader/parser shall validate XML-documents against schemata. More...
 
XERCES_CPP_NAMESPACE::SAX2XMLReader * myXMLReader
 
std::vector< SumoXMLTagmyXMLStack
 The stack of begun xml elements. More...
 

Detailed Description

SAX-reader encapsulation containing binary reader.

This class generates on demand either a SAX2XMLReader or parses the SUMO binary xml. The interface is inspired by but not identical to SAX2XMLReader.

Definition at line 53 of file SUMOSAXReader.h.

Constructor & Destructor Documentation

◆ SUMOSAXReader() [1/2]

SUMOSAXReader::SUMOSAXReader ( GenericSAXHandler handler,
const std::string &  validationScheme,
XERCES_CPP_NAMESPACE::XMLGrammarPool *  grammarPool 
)

Constructor.

Parameters
[in]fileThe name of the processed file

Definition at line 49 of file SUMOSAXReader.cpp.

References setHandler().

◆ ~SUMOSAXReader()

SUMOSAXReader::~SUMOSAXReader ( )

Destructor.

Definition at line 56 of file SUMOSAXReader.cpp.

References myNextSection, and myXMLReader.

◆ SUMOSAXReader() [2/2]

SUMOSAXReader::SUMOSAXReader ( const SUMOSAXReader s)
private

invalidated copy constructor

Member Function Documentation

◆ ensureSAXReader()

void SUMOSAXReader::ensureSAXReader ( )
private

Builds a reader, if needed.

Tries to build a SAX2XMLReader using XMLReaderFactory::createXMLReader, if no reader has been created yet. If this fails, a ProcessError is thrown. Otherwise the validation is set matching the value of "myValidationScheme". If validation is not wanted, a WFXMLScanner is used (see http://www.ibm.com/developerworks/library/x-xercesperf.html).

Definition at line 178 of file SUMOSAXReader.cpp.

References myGrammarPool, myHandler, myXMLReader, and setValidation().

Referenced by parse(), parseFirst(), and parseString().

Here is the caller graph for this function:

◆ operator=()

const SUMOSAXReader & SUMOSAXReader::operator= ( const SUMOSAXReader s)
private

invalidated assignment operator

◆ parse()

void SUMOSAXReader::parse ( std::string  systemID)

Parse the given file completely by calling parse of myXMLReader.

This throws a ProcessError if the file is not readable and can handle gzipped XML as well.

Parameters
[in]systemIDfile name

Definition at line 99 of file SUMOSAXReader.cpp.

References ensureSAXReader(), FileHelpers::isDirectory(), FileHelpers::isReadable(), myXMLReader, and StringUtils::transcodeToLocal().

◆ parseFirst()

bool SUMOSAXReader::parseFirst ( std::string  systemID)

Start parsing the given file using parseFirst of myXMLReader.

Parameters
[in]systemIDfile name
Returns
whether the prolog could be parsed successfully

Definition at line 125 of file SUMOSAXReader.cpp.

References ensureSAXReader(), FileHelpers::isDirectory(), FileHelpers::isReadable(), myInputStream, myIStream, myToken, myXMLReader, and StringUtils::transcodeToLocal().

Referenced by MSStateHandler::MSStateTimeHandler::getTime(), PCNetProjectionLoader::load(), and SUMORouteLoader::SUMORouteLoader().

Here is the caller graph for this function:

◆ parseNext()

bool SUMOSAXReader::parseNext ( )

Continue a progressive parse started by parseFirst.

Returns
whether the next token could be parsed successfully

Definition at line 145 of file SUMOSAXReader.cpp.

References myToken, and myXMLReader.

Referenced by MSStateHandler::MSStateTimeHandler::getTime(), PCNetProjectionLoader::load(), and SUMORouteLoader::loadUntil().

Here is the caller graph for this function:

◆ parseSection()

bool SUMOSAXReader::parseSection ( int  element)

Continue a progressive parse started by parseFirst until the given element is encountered.

The parse will continue until the section encapsulated by the element is completed

Returns
whether the next section could be parsed successfully

Definition at line 154 of file SUMOSAXReader.cpp.

References myHandler, myNextSection, GenericSAXHandler::myStartElement(), myToken, myXMLReader, GenericSAXHandler::retrieveNextSectionStart(), GenericSAXHandler::sectionFinished(), and GenericSAXHandler::setSection().

◆ parseString()

void SUMOSAXReader::parseString ( std::string  content)

Parse XML from the given string.

Parameters
[in]contentXML string

Definition at line 117 of file SUMOSAXReader.cpp.

References ensureSAXReader(), and myXMLReader.

Referenced by GUISettingsHandler::GUISettingsHandler(), NITypeLoader::load(), and main().

Here is the caller graph for this function:

◆ setHandler()

void SUMOSAXReader::setHandler ( GenericSAXHandler handler)

Sets the given handler as content and error handler for the reader.

Parameters
[in]handlerThe handler to assign to the reader

Definition at line 63 of file SUMOSAXReader.cpp.

References myHandler, and myXMLReader.

Referenced by SUMOSAXReader().

Here is the caller graph for this function:

◆ setValidation()

void SUMOSAXReader::setValidation ( std::string  validationScheme = "")

Sets a new validation scheme and applies the validation settings to the XML reader.

If no new scheme is given, the settings of the current scheme are applied.

Parameters
[in]validationSchemeThe validation scheme (one of "never", "local", "auto", or "always")

Definition at line 73 of file SUMOSAXReader.cpp.

References myLocalResolver, myNoOpResolver, mySchemaResolver, myValidationScheme, and myXMLReader.

Referenced by ensureSAXReader().

Here is the caller graph for this function:

Field Documentation

◆ myGrammarPool

XERCES_CPP_NAMESPACE::XMLGrammarPool* SUMOSAXReader::myGrammarPool
private

Schema cache to be used for grammars which are not declared.

Definition at line 151 of file SUMOSAXReader.h.

Referenced by ensureSAXReader().

◆ myHandler

GenericSAXHandler* SUMOSAXReader::myHandler
private

Definition at line 145 of file SUMOSAXReader.h.

Referenced by ensureSAXReader(), parseSection(), and setHandler().

◆ myInputStream

std::unique_ptr<IStreamInputSource> SUMOSAXReader::myInputStream
private

Definition at line 159 of file SUMOSAXReader.h.

Referenced by parseFirst().

◆ myIStream

std::unique_ptr<std::istream> SUMOSAXReader::myIStream
private

Definition at line 157 of file SUMOSAXReader.h.

Referenced by parseFirst().

◆ myLocalResolver

LocalSchemaResolver SUMOSAXReader::myLocalResolver
private

Definition at line 166 of file SUMOSAXReader.h.

Referenced by setValidation().

◆ myNextSection

std::pair<int, SUMOSAXAttributes*> SUMOSAXReader::myNextSection
private

Definition at line 170 of file SUMOSAXReader.h.

Referenced by parseSection(), and ~SUMOSAXReader().

◆ myNoOpResolver

LocalSchemaResolver SUMOSAXReader::myNoOpResolver
private

Definition at line 168 of file SUMOSAXReader.h.

Referenced by setValidation().

◆ mySchemaResolver

LocalSchemaResolver SUMOSAXReader::mySchemaResolver
private

Definition at line 164 of file SUMOSAXReader.h.

Referenced by setValidation().

◆ myToken

XERCES_CPP_NAMESPACE::XMLPScanToken SUMOSAXReader::myToken
private

Definition at line 153 of file SUMOSAXReader.h.

Referenced by parseFirst(), parseNext(), and parseSection().

◆ myValidationScheme

std::string SUMOSAXReader::myValidationScheme
private

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

Definition at line 148 of file SUMOSAXReader.h.

Referenced by setValidation().

◆ myXMLReader

XERCES_CPP_NAMESPACE::SAX2XMLReader* SUMOSAXReader::myXMLReader
private

◆ myXMLStack

std::vector<SumoXMLTag> SUMOSAXReader::myXMLStack
private

The stack of begun xml elements.

Definition at line 162 of file SUMOSAXReader.h.


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