// // SAXParser.h // // Library: XML // Package: SAX // Module: SAX // // Implementation of the XMLReader interface. // // Copyright (c) 2004-2006, Applied Informatics Software Engineering GmbH. // and Contributors. // // SPDX-License-Identifier: BSL-1.0 // #ifndef SAX_SAXParser_INCLUDED #define SAX_SAXParser_INCLUDED #include "Poco/SAX/XMLReader.h" #include "Poco/XML/ParserEngine.h" #include "Poco/XML/XML.h" namespace Poco { namespace XML { class XML_API SAXParser : public XMLReader /// This class provides a SAX2 (Simple API for XML) interface to expat, /// the XML parser toolkit. /// The following SAX2 features and properties are supported: /// * http://xml.org/sax/features/external-general-entities /// * http://xml.org/sax/features/external-parameter-entities /// * http://xml.org/sax/features/namespaces /// * http://xml.org/sax/features/namespace-prefixes /// * http://xml.org/sax/properties/lexical-handler /// * http://xml.org/sax/properties/declaration-handler /// /// The following proprietary extensions are supported: /// * http://www.appinf.com/features/enable-partial-reads -- /// see ParserEngine::setEnablePartialReads() /// * http://www.appinf.com/properties/bla-maximum-amplification /// see ParserEngine::setBillionLaughsAttackProtectionMaximumAmplification(); /// argument must be a float >= 1.0 formatted as string; /// property is set-only. /// * http://www.appinf.com/properties/bla-activation-threshold /// see ParserEngine::setBillionLaughsAttackProtectionActivationThreshold(); /// argument must be a 64-bit unsigned integer formatted as string; /// property is set-only. { public: SAXParser(); /// Creates an SAXParser. SAXParser(const XMLString & encoding); /// Creates an SAXParser with the given encoding. ~SAXParser(); /// Destroys the SAXParser. void setEncoding(const XMLString & encoding); /// Sets the encoding used by the parser if no /// encoding is specified in the XML document. const XMLString & getEncoding() const; /// Returns the name of the encoding used by /// the parser if no encoding is specified in /// the XML document. void addEncoding(const XMLString & name, Poco::TextEncoding * pEncoding); /// Adds an encoding to the parser. Does not take ownership of the pointer! /// XMLReader void setEntityResolver(EntityResolver * pResolver); EntityResolver * getEntityResolver() const; void setDTDHandler(DTDHandler * pDTDHandler); DTDHandler * getDTDHandler() const; void setContentHandler(ContentHandler * pContentHandler); ContentHandler * getContentHandler() const; void setErrorHandler(ErrorHandler * pErrorHandler); ErrorHandler * getErrorHandler() const; void setFeature(const XMLString & featureId, bool state); bool getFeature(const XMLString & featureId) const; void setProperty(const XMLString & propertyId, const XMLString & value); void setProperty(const XMLString & propertyId, void * value); void * getProperty(const XMLString & propertyId) const; void parse(InputSource * pSource); void parse(const XMLString & systemId); void parseMemoryNP(const char * xml, std::size_t size); /// Extensions void parseString(const std::string & xml); static const XMLString FEATURE_PARTIAL_READS; static const XMLString PROPERTY_BLA_MAXIMUM_AMPLIFICATION; static const XMLString PROPERTY_BLA_ACTIVATION_THRESHOLD; protected: void setupParse(); private: ParserEngine _engine; bool _namespaces; bool _namespacePrefixes; }; } } // namespace Poco::XML #endif // SAX_SAXParser_INCLUDED