Eclipse SUMO - Simulation of Urban MObility
SUMOSAXReader.h
Go to the documentation of this file.
1 /****************************************************************************/
2 // Eclipse SUMO, Simulation of Urban MObility; see https://eclipse.org/sumo
3 // Copyright (C) 2012-2020 German Aerospace Center (DLR) and others.
4 // This program and the accompanying materials are made available under the
5 // terms of the Eclipse Public License 2.0 which is available at
6 // https://www.eclipse.org/legal/epl-2.0/
7 // This Source Code may also be made available under the following Secondary
8 // Licenses when the conditions for such availability set forth in the Eclipse
9 // Public License 2.0 are satisfied: GNU General Public License, version 2
10 // or later which is available at
11 // https://www.gnu.org/licenses/old-licenses/gpl-2.0-standalone.html
12 // SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-or-later
13 /****************************************************************************/
20 // SAX-reader encapsulation containing binary reader
21 /****************************************************************************/
22 #pragma once
23 #include <config.h>
24 
25 #include <string>
26 #include <memory>
27 #include <vector>
28 #include <xercesc/sax2/SAX2XMLReader.hpp>
29 #include <xercesc/sax/EntityResolver.hpp>
30 #include <xercesc/sax/InputSource.hpp>
31 #include "SUMOXMLDefinitions.h"
32 
33 
34 // ===========================================================================
35 // class declarations
36 // ===========================================================================
37 class GenericSAXHandler;
38 class IStreamInputSource;
39 
40 
41 // ===========================================================================
42 // class definitions
43 // ===========================================================================
53 public:
59  SUMOSAXReader(GenericSAXHandler& handler, const XERCES_CPP_NAMESPACE::SAX2XMLReader::ValSchemes validationScheme, XERCES_CPP_NAMESPACE::XMLGrammarPool* grammarPool);
60 
63 
69  void setHandler(GenericSAXHandler& handler);
70 
71  void setValidation(const XERCES_CPP_NAMESPACE::SAX2XMLReader::ValSchemes validationScheme);
72 
73  void parse(std::string systemID);
74 
75  void parseString(std::string content);
76 
77  bool parseFirst(std::string systemID);
78 
79  bool parseNext();
80 
81 private:
82  class LocalSchemaResolver : public XERCES_CPP_NAMESPACE::EntityResolver {
83  public:
84  XERCES_CPP_NAMESPACE::InputSource* resolveEntity(const XMLCh* const publicId, const XMLCh* const systemId);
85  void setHandler(GenericSAXHandler& handler);
86  private:
88  };
89 
90 private:
101  XERCES_CPP_NAMESPACE::SAX2XMLReader* getSAXReader();
102 
103 
104 private:
106 
108  XERCES_CPP_NAMESPACE::SAX2XMLReader::ValSchemes myValidationScheme;
109 
111  XERCES_CPP_NAMESPACE::XMLGrammarPool* myGrammarPool;
112 
113  XERCES_CPP_NAMESPACE::XMLPScanToken myToken;
114 
115  XERCES_CPP_NAMESPACE::SAX2XMLReader* myXMLReader;
116 
117  std::unique_ptr<std::istream> myIStream;
118 
119  std::unique_ptr<IStreamInputSource> myInputStream;
120 
122  std::vector<SumoXMLTag> myXMLStack;
123 
125 
126 private:
129 
132 
133 };
A handler which converts occuring elements and attributes into enums.
Xerces InputSource reading from arbitrary std::istream.
void setHandler(GenericSAXHandler &handler)
XERCES_CPP_NAMESPACE::InputSource * resolveEntity(const XMLCh *const publicId, const XMLCh *const systemId)
SAX-reader encapsulation containing binary reader.
Definition: SUMOSAXReader.h:52
XERCES_CPP_NAMESPACE::SAX2XMLReader::ValSchemes myValidationScheme
Information whether built reader/parser shall validate XML-documents against schemata.
std::unique_ptr< IStreamInputSource > myInputStream
SUMOSAXReader(GenericSAXHandler &handler, const XERCES_CPP_NAMESPACE::SAX2XMLReader::ValSchemes validationScheme, XERCES_CPP_NAMESPACE::XMLGrammarPool *grammarPool)
Constructor.
void setHandler(GenericSAXHandler &handler)
Sets the given handler as content and error handler for the reader.
void parseString(std::string content)
bool parseFirst(std::string systemID)
std::unique_ptr< std::istream > myIStream
const SUMOSAXReader & operator=(const SUMOSAXReader &s)
invalidated assignment operator
LocalSchemaResolver mySchemaResolver
void setValidation(const XERCES_CPP_NAMESPACE::SAX2XMLReader::ValSchemes validationScheme)
~SUMOSAXReader()
Destructor.
XERCES_CPP_NAMESPACE::SAX2XMLReader * getSAXReader()
Builds a reader.
SUMOSAXReader(const SUMOSAXReader &s)
invalidated copy constructor
std::vector< SumoXMLTag > myXMLStack
The stack of begun xml elements.
GenericSAXHandler * myHandler
void parse(std::string systemID)
XERCES_CPP_NAMESPACE::SAX2XMLReader * myXMLReader
XERCES_CPP_NAMESPACE::XMLGrammarPool * myGrammarPool
Schema cache to be used for grammars which are not declared.
XERCES_CPP_NAMESPACE::XMLPScanToken myToken