📄 xmlparser.h
字号:
/* Copyright (C) 2000-2004 Code contributed by Greg Collecutt, Joseph Hope and Paul Cochrane This file is part of xmds. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.*//* $Id: xmlparser.h,v 1.9 2004/04/29 03:23:00 paultcochrane Exp $*//*! @file xmlparser.h @brief Header defining xml parser objects*/#ifndef LIST#include<list>#define LIST#endif// ******************************************************************************// ******************************************************************************// XMLParserException// ******************************************************************************// ******************************************************************************class XMLEntityStream;//! XMLParserException classclass XMLParserException {public : //! Enumerator of various xml errors enum { BAD_XML_ERR, ENCODING_NOT_SUPPORTED_ERR, INVALID_FILE_ERR, INTERNAL_ERR, UNKNOWN_ERR}; const unsigned short theError; //!< Number defining the error //! Constructor of XMLParserException object XMLParserException(); //! Constructor of XMLParserException object XMLParserException( const list<XMLEntityStream*> *const yourXMLEntityStreamStack, const char *const yourErrorMessage, const unsigned short& yourError); //! Destructor ~XMLParserException(); //! Gets an xml parser error const char* getError();private : char s[2048]; //!< Container variable for a string of characters const list<XMLEntityStream*> *const theXMLEntityStreamStack; //!< The XML entity stream stack const char *const theErrorMessage; //!< The error message to print};// ******************************************************************************// ******************************************************************************// XMLEntityStream// ******************************************************************************// ******************************************************************************//! Structure containing the stream positionstruct StreamPositionStruct { unsigned long count; //!< Counter variable unsigned long lineNumber; //!< Current line number unsigned long columnNumber;//!< Current column number};class XMLParser;//! XMLEntityStream classclass XMLEntityStream {public : //! Keeps tabs on the stream position StreamPositionStruct streamPos; //! Constructor for XMLEntityStream object XMLEntityStream( XMLParser *const yourXMLParser, XMLEntityStream *const yourParentXMLEntityStream, const XMLString& yourName, const XMLString& yourSystemID); //! Destructor virtual ~XMLEntityStream(); //! Returns the name as an XMLString const XMLString* name() const; //! Returns the parent xml entity stream XMLEntityStream* parentXMLEntityStream(); //! Enumerator containing the xml entity stream types enum XMLEntityStreamType { ROOT_ENTITY, PARAMETER_ENTITY, GENERAL_ENTITY, UNPARSED_ENTITY}; //! Returns the entity type virtual XMLEntityStreamType entityType() const = 0; //! Enumerator containing the xml entity location type enum XMLEntityLocationType { INTERNAL_ENTITY, EXTERNAL_ENTITY}; //! Returns the entity location virtual XMLEntityLocationType entityLocation() const = 0; //! Determines if are at the end of the xml stream bool atEnd() const; //virtual char nextChar(); //! Returns the next character in the stream virtual signed char nextChar(); //! Returns the replacement text as an XMLString virtual const XMLString* replacementText() = 0; //! Adds a parameter xml entity stream XMLEntityStream* addParameterXMLEntityStream( const XMLString& name, const XMLString& PublicID, const XMLString& SystemID); //! Adds a parameter xml entity stream XMLEntityStream* addParameterXMLEntityStream( const XMLString& name, const XMLString& EntityLiteral); //! Adds a general xml entity stream XMLEntityStream* addGeneralXMLEntityStream( const XMLString& name, const XMLString& EntityLiteral); //! Adds a general xml entity stream XMLEntityStream* addGeneralXMLEntityStream( const XMLString& name, const XMLString& PublicID, const XMLString& SystemID); //! Adds an unparsed xml entity stream XMLEntityStream* addUnparsedXMLEntityStream( const XMLString& name, const XMLString& PublicID, const XMLString& SystemID, const XMLString& NotationName); //! Gets an xml entity stream XMLEntityStream* getXMLEntityStream( const XMLString& getName, const XMLEntityStreamType& ofEntityType); //! Prints the stream tree void printStreamTree( unsigned long level) const;protected: char errormessage[1024]; //!< Stores the error message XMLParser *const myXMLParser; //!< Declares the xml parser object const XMLString myName; //!< Declares the xml string name XMLString myTextString; //!< Declares the text string bool myTextStringValid; //!< Indicates if the text is valid //! Gets the xml entity stream tree walk down XMLEntityStream* getXMLEntityStreamTreeWalkDown( const XMLString& name, const XMLEntityStreamType& ofEntityType); //! Loads an external text string void loadExternalTextString(); //! Makes a text string void virtual makeTextString() = 0;private : XMLEntityStream *const myParentXMLEntityStream; //!< Undocumented const XMLString mySystemID; //!< Undocumented list<XMLEntityStream*> myXMLEntityStreamList; //!< Undocumented};// ******************************************************************************// ******************************************************************************// RootXMLEntityStream// ******************************************************************************// ******************************************************************************//! RootXMLEntityStream classclass RootXMLEntityStream: public XMLEntityStream {public: //! Constructor of RootXMLEntityStream object RootXMLEntityStream( XMLParser *const yourXMLParser, const XMLString& yourSystemID); //! Returns the entity type of the xml entity stream XMLEntityStreamType entityType() const; //! Returns the entity location of the xml entity stream XMLEntityLocationType entityLocation() const; //! Returns the replacement text as an XMLString const XMLString* replacementText();protected: //! Makes a text string void makeTextString();};// ******************************************************************************// ******************************************************************************// GPXMLEntityStream// ******************************************************************************// ******************************************************************************//! GPXMLEntityStream classclass GPXMLEntityStream: public XMLEntityStream {public: //! Constructor for an internal entity //! Finally Greg has commented something!! GPXMLEntityStream( XMLParser *const yourXMLParser, XMLEntityStream *const yourParentXMLEntityStream, const XMLString& yourName, const XMLString& yourEntityLiteral); //! Constructor for an external entity //! Finally Greg has commented something!! GPXMLEntityStream( XMLParser *const yourXMLParser, XMLEntityStream *const yourParentXMLEntityStream, const XMLString& yourName, const XMLString& yourPublicID, const XMLString& yourSystemID); //! Returns the entity location XMLEntityLocationType entityLocation() const; //! Returns the replacement text as an XMLString const XMLString* replacementText();protected: //! Makes a text string void makeTextString();private: const XMLString myPublicID; //!< The current public id of the entity const XMLString myEntityLiteral; //!< The literal string of the entity const XMLEntityLocationType myEntityLocation; //!< The entity location};// ******************************************************************************// ******************************************************************************// ParameterXMLEntityStream// ******************************************************************************// ******************************************************************************//! ParameterXMLEntityStream classclass ParameterXMLEntityStream: public GPXMLEntityStream {public: //! Constructor for an internal entity //! Finally Greg has commented something!! ParameterXMLEntityStream( XMLParser *const yourXMLParser, XMLEntityStream *const yourParentXMLEntityStream, const XMLString& yourName, const XMLString& yourEntityLiteral); //! Constructor for an external entity //! Finally Greg has commented something!! ParameterXMLEntityStream( XMLParser *const yourXMLParser, XMLEntityStream *const yourParentXMLEntityStream, const XMLString& yourName, const XMLString& yourPublicID, const XMLString& yourSystemID); //! Returns the entity type XMLEntityStreamType entityType() const;};// ******************************************************************************// ******************************************************************************// GeneralXMLEntityStream// ******************************************************************************// ******************************************************************************//! GeneralXMLEntityStream classclass GeneralXMLEntityStream: public GPXMLEntityStream {public: //! Constructor for an internal entity //! Finally Greg has commented something!! GeneralXMLEntityStream( XMLParser *const yourXMLParser, XMLEntityStream *const yourParentXMLEntityStream, const XMLString& yourName, const XMLString& yourEntityLiteral); //! Constructor for an external entity //! Finally Greg has commented something!! GeneralXMLEntityStream( XMLParser *const yourXMLParser, XMLEntityStream *const yourParentXMLEntityStream, const XMLString& yourName, const XMLString& yourPublicID, const XMLString& yourSystemID); //! Returns the entity type XMLEntityStreamType entityType() const;};// ******************************************************************************// ******************************************************************************// UnparsedXMLEntityStream// ******************************************************************************// ******************************************************************************//! UnparsedXMLEntityStream classclass UnparsedXMLEntityStream: public XMLEntityStream {public: //! Constructor for an external entity //! Finally Greg has commented something!! UnparsedXMLEntityStream( XMLParser *const yourXMLParser, XMLEntityStream *const yourParentXMLEntityStream, const XMLString& yourName, const XMLString& yourPublicID, const XMLString& yourSystemID, const XMLString& yourNotationName); //! Returns the entity type XMLEntityStreamType entityType() const; //! Returns the entity location XMLEntityLocationType entityLocation() const; //! Returns the replacement text const XMLString* replacementText(); // overrides of XMLEntityStream functions that // should never be called for this entity //! Determines if are at end of entity stream /*! Overrides of XMLEntityStream functions that should never be called for this entity */ bool atEnd() const; //! Adds a parameter xml entity stream /*! Overrides of XMLEntityStream functions that should never be called for this entity */ XMLEntityStream* addParameterXMLEntityStream( const XMLString& name, const XMLString& PublicID, const XMLString& SystemID); //! Adds a parameter xml entity stream /*! Overrides of XMLEntityStream functions that should never be called for this entity */ XMLEntityStream* addParameterXMLEntityStream( const XMLString& name, const XMLString& EntityLiteral); //! Adds a general xml entity stream /*! Overrides of XMLEntityStream functions that should never be called for this entity */ XMLEntityStream* addGeneralXMLEntityStream( const XMLString& name, const XMLString& EntityLiteral); //! Adds a general xml entity stream /*! Overrides of XMLEntityStream functions that should never be called for this entity */ XMLEntityStream* addGeneralXMLEntityStream( const XMLString& name, const XMLString& PublicID, const XMLString& SystemID, const XMLString& NotationName); //! Adds an unparsed xml entity stream /*! Overrides of XMLEntityStream functions that should never be called for this entity */ XMLEntityStream* addUnparsedXMLEntityStream( const XMLString& name, const XMLString& PublicID, const XMLString& SystemID, const XMLString& NotationName); //! Gets an xml entity stream /*! Overrides of XMLEntityStream functions that should never be called for this entity */ XMLEntityStream* getXMLEntityStream( const XMLString& getName, const XMLEntityStreamType& ofEntityType);protected: //! Makes a text string void makeTextString();private: const XMLString myPublicID; //!< The public id of the entity const XMLString myNotationName; //!< The notation name (of the entity?)};// ******************************************************************************// ******************************************************************************// XMLParser// ******************************************************************************// ******************************************************************************//! XMLParser classclass XMLParser {public : //! An xml entity stream stack list<XMLEntityStream*> XMLEntityStreamStack; //! Constructor for XMLParser object XMLParser(); //! Destructor ~XMLParser(); //! Parses xml given fileName Document* parseFromFile( const char* fileName); //! Returns xmds byte point (whatever that may mean) unsigned long xmdsBytePoint() const; //! Matches production 66 character reference (whatever that may mean) unsigned long matchProduction66CharRef( XMLEntityStream *const thisStream, //char& cRef) const; signed char& cRef) const; //! Matches production 69 PE reference (whatever that may mean) unsigned long matchProduction69PEReference( XMLEntityStream *const thisStream, XMLString& PEName) const; //! Matches production 77 text declaration (whatever that may mean) void matchProduction77TextDecl( XMLEntityStream *const thisStream, XMLString& VersionNum, XMLString& encoding);private : KissDOMImplementation myDOMImplementation; //!< Undocumented DocumentType* theDocumentType; //!< Undocumented Document* theDocument; //!< Undocumented XMLEntityStream* rootXMLEntityStream; //!< Undocumented XMLEntityStream* currentXMLEntityStream; //!< Undocumented char errormessage[1024]; //!< Undocumented unsigned long myxmdsBytePoint; //!< Undocumented // stuff recovered from the XMLDecl routine XMLString rootVersionNum; //!< Undocumented XMLString rootEncName; //!< Undocumented
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -