sax2xmlreaderimpl.hpp
来自「IBM的解析xml的工具Xerces的源代码」· HPP 代码 · 共 1,640 行 · 第 1/5 页
HPP
1,640 行
/* * Copyright 1999-2004 The Apache Software Foundation. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. *//* * $Log: SAX2XMLReaderImpl.hpp,v $ * Revision 1.26 2004/09/30 14:07:23 peiyongz * setInputBufferSize * * Revision 1.25 2004/09/08 13:56:17 peiyongz * Apache License Version 2.0 * * Revision 1.24 2003/11/06 15:30:07 neilg * first part of PSVI/schema component model implementation, thanks to David Cargill. This covers setting the PSVIHandler on parser objects, as well as implementing XSNotation, XSSimpleTypeDefinition, XSIDCDefinition, and most of XSWildcard, XSComplexTypeDefinition, XSElementDeclaration, XSAttributeDeclaration and XSAttributeUse. * * Revision 1.23 2003/10/30 21:37:31 knoaman * Enhanced Entity Resolver Support. Thanks to David Cargill. * * Revision 1.22 2003/06/20 18:55:54 peiyongz * Stateless Grammar Pool :: Part I * * Revision 1.21 2003/05/22 02:10:51 knoaman * Default the memory manager. * * Revision 1.20 2003/05/15 18:26:50 knoaman * Partial implementation of the configurable memory manager. * * Revision 1.19 2003/04/17 21:58:50 neilg * Adding a new property, * http://apache.org/xml/properties/security-manager, with * appropriate getSecurityManager/setSecurityManager methods on DOM * and SAX parsers. Also adding a new SecurityManager class. * * The purpose of these modifications is to permit applications a * means to have the parser reject documents whose processing would * otherwise consume large amounts of system resources. Malicious * use of such documents could be used to launch a denial-of-service * attack against a system running the parser. Initially, the * SecurityManager only knows about attacks that can result from * exponential entity expansion; this is the only known attack that * involves processing a single XML document. Other, simlar attacks * can be launched if arbitrary schemas may be parsed; there already * exist means (via use of the EntityResolver interface) by which * applications can deny processing of untrusted schemas. In future, * the SecurityManager will be expanded to take these other exploits * into account. * * Adding SecurityManager support * * Revision 1.18 2003/03/07 18:09:16 tng * Return a reference instead of void for operator= * * Revision 1.17 2003/01/09 19:07:08 tng * [Bug 15802] Add "const" qualifier to getURIText. * * Revision 1.16 2002/12/23 15:23:18 knoaman * Added a public api to various parsers to return the src offset within the input * source. * * Revision 1.15 2002/12/04 01:57:09 knoaman * Scanner re-organization. * * Revision 1.14 2002/11/04 14:57:03 tng * C++ Namespace Support. * * Revision 1.13 2002/08/14 15:20:38 knoaman * [Bug 3111] Problem with LexicalHandler::startDTD() and LexicalHandler::endDTD(). * * Revision 1.12 2002/07/11 18:27:04 knoaman * Grammar caching/preparsing - initial implementation. * * Revision 1.11 2002/06/27 18:47:32 tng * API Documentation Update. * * Revision 1.10 2002/06/17 15:41:15 tng * To be consistent, SAX2 is updated with: * 1. the progressive parse methods should use the fReuseGrammar flag set from setFeature instead of using parameter * 2. add feature "http://apache.org/xml/features/continue-after-fatal-error", and users should use setFeature instead of setExitOnFirstFatalError * 3. add feature "http://apache.org/xml/features/validation-error-as-fatal", and users should use setFeature instead of setValidationConstraintFatal * * Revision 1.9 2002/06/06 20:38:18 tng * Document Fix: document that the returned object from resolveEntity is owned by the parser * * Revision 1.8 2002/05/31 15:13:53 tng * Fix doxygen documentation. * * Revision 1.7 2002/05/30 16:39:06 knoaman * DOM L3 LS. * * Revision 1.6 2002/05/30 16:20:09 tng * Add feature to optionally ignore external DTD. * * Revision 1.5 2002/05/29 21:37:47 knoaman * Add baseURI to resolveEntity to support DOMInputSource. * * Revision 1.4 2002/05/28 20:44:14 tng * [Bug 9104] prefixes dissapearing when schema validation turned on. * * Revision 1.3 2002/05/27 18:39:21 tng * To get ready for 64 bit large file, use XMLSSize_t to represent line and column number. * * Revision 1.2 2002/02/13 16:09:24 knoaman * Move SAX2 features/properties names constants to XMLUni. * * Revision 1.1.1.1 2002/02/01 22:22:07 peiyongz * sane_include * * Revision 1.21 2002/01/28 18:45:40 knoaman * Update documentation for SAX2 feature 'namespace-prefixes'. * * Revision 1.20 2002/01/28 17:08:47 knoaman * SAX2-ext's DeclHandler support. * * Revision 1.19 2002/01/24 16:30:34 tng * [Bug 3111] Problem with LexicalHandler::startDTD() and LexicalHandler::endDTD() . * * Revision 1.18 2002/01/18 16:31:38 tng * Break program.xml which takes too long to load, into program-sax.xml, program-sax2.xml, program-dom.xml, program-idom.xml. * * Revision 1.17 2002/01/02 15:36:41 tng * Some documentation update. * * Revision 1.16 2001/11/20 18:51:44 tng * Schema: schemaLocation and noNamespaceSchemaLocation to be specified outside the instance document. New methods setExternalSchemaLocation and setExternalNoNamespaceSchemaLocation are added (for SAX2, two new properties are added). * * Revision 1.15 2001/11/14 14:15:42 tng * Update SAX2 feature documentation. * * Revision 1.14 2001/09/12 13:03:43 tng * [Bug 3155] SAX2 does not offer progressive parse. * * Revision 1.13 2001/08/01 19:11:02 tng * Add full schema constraint checking flag to the samples and the parser. * * Revision 1.12 2001/06/27 17:39:52 knoaman * Fix for bug #2353. * * Revision 1.11 2001/06/19 16:45:08 tng * Add installAdvDocHandler to SAX2XMLReader as the code is there already. * * Revision 1.10 2001/06/04 21:01:49 jberry * getErrorCount is virtual in this class reflecting derivation from SAX2XMLReader. * * Revision 1.9 2001/06/03 19:26:19 jberry * Add support for querying error count following parse; enables simple parse without requiring error handler. * * Revision 1.8 2001/05/11 13:26:21 tng * Copyright update. * * Revision 1.7 2001/03/30 16:46:57 tng * Schema: Use setDoSchema instead of setSchemaValidation which makes more sense. * * Revision 1.6 2001/03/21 21:56:08 tng * Schema: Add Schema Grammar, Schema Validator, and split the DTDValidator into DTDValidator, DTDScanner, and DTDGrammar. * * Revision 1.5 2001/02/15 15:56:29 tng * Schema: Add setSchemaValidation and getSchemaValidation for DOMParser and SAXParser. * Add feature "http://apache.org/xml/features/validation/schema" for SAX2XMLReader. * New data field fSchemaValidation in XMLScanner as the flag. * * Revision 1.4 2000/12/22 15:16:53 tng * SAX2-ext's LexicalHandler support added by David Bertoni. * * Revision 1.3 2000/08/09 22:16:13 jpolast * many conformance & stability changes: * - ContentHandler::resetDocument() removed * - attrs param of ContentHandler::startDocument() made const * - SAXExceptions thrown now have msgs * - removed duplicate function signatures that had 'const' * [ eg: getContentHander() ] * - changed getFeature and getProperty to apply to const objs * - setProperty now takes a void* instead of const void* * - SAX2XMLReaderImpl does not inherit from SAXParser anymore * - Reuse Validator (http://apache.org/xml/features/reuse-validator) implemented * - Features & Properties now read-only during parse * * Revision 1.2 2000/08/02 20:46:32 aruna1 * sax2 changes * * Revision 1.1 2000/08/02 18:04:41 jpolast * initial checkin of sax2 implemenation * submitted by Simon Fell (simon@fell.com) * and Joe Polastre (jpolast@apache.org) * * */#if !defined(SAX2XMLReaderImpl_HPP)#define SAX2XMLReaderImpl_HPP#include <xercesc/parsers/SAXParser.hpp>#include <xercesc/sax/Parser.hpp>#include <xercesc/framework/XMLBuffer.hpp>#include <xercesc/internal/VecAttributesImpl.hpp>#include <xercesc/sax2/SAX2XMLReader.hpp>#include <xercesc/util/RefStackOf.hpp>#include <xercesc/util/SecurityManager.hpp>#include <xercesc/util/ValueStackOf.hpp>#include <xercesc/framework/XMLBufferMgr.hpp>XERCES_CPP_NAMESPACE_BEGINclass ContentHandler;class LexicalHandler;class DeclHandler;class GrammarResolver;class XMLGrammarPool;class XMLResourceIdentifier;class PSVIHandler;/** * This class implements the SAX2 'XMLReader' interface and should be * used by applications wishing to parse the XML files using SAX2. * It allows the client program to install SAX2 handlers for event * callbacks. * * <p>It can be used to instantiate a validating or non-validating * parser, by setting a member flag.</p> * * we basically re-use the existing SAX1 parser code, but provide a * new implementation of XMLContentHandler that raises the new * SAX2 style events * */class PARSERS_EXPORT SAX2XMLReaderImpl : public XMemory , public SAX2XMLReader , public XMLDocumentHandler , public XMLErrorReporter , public XMLEntityHandler , public DocTypeHandler{public : // ----------------------------------------------------------------------- // Constructors and Destructor // ----------------------------------------------------------------------- /** @name Constructors and Destructor */ //@{ /** The default constructor */ SAX2XMLReaderImpl( MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager , XMLGrammarPool* const gramPool = 0 ); /** The destructor */ ~SAX2XMLReaderImpl() ; //@} //----------------------------------------------------------------------- // Implementation of SAX2XMLReader Interface //----------------------------------------------------------------------- //----------------------------------------------------------------------- // The XMLReader interface //----------------------------------------------------------------------- /** @name Implementation of SAX 2.0 XMLReader interface's. */ //@{ /** * This method returns the installed content handler. * * @return A pointer to the installed content handler object. */ virtual ContentHandler* getContentHandler() const ; /** * This method returns the installed DTD handler. * * @return A pointer to the installed DTD handler object. */ virtual DTDHandler* getDTDHandler() const ; /** * This method returns the installed entity resolver. * * @return A pointer to the installed entity resolver object. */ virtual EntityResolver* getEntityResolver() const ; /** * This method returns the installed entity resolver. * * @return A pointer to the installed entity resolver object. */ virtual XMLEntityResolver* getXMLEntityResolver() const ; /** * This method returns the installed error handler. * * @return A pointer to the installed error handler object. */ virtual ErrorHandler* getErrorHandler() const ; /** * This method returns the installed PSVI handler. * * @return A pointer to the installed PSVI handler object. */ virtual PSVIHandler* getPSVIHandler() const ; /** * Query the current state of any feature in a SAX2 XMLReader. * * @param name The unique identifier (URI) of the feature being set. * @return The current state of the feature. * @exception SAXNotRecognizedException If the requested feature is not known. */ virtual bool getFeature(const XMLCh* const name) const ; /** * Query the current value of a property in a SAX2 XMLReader. * * The parser owns the returned pointer. The memory allocated for * the returned pointer will be destroyed when the parser is deleted. *
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?