diff -r 666f914201fb -r 2fe1408b6811 epoc32/include/xmlengdomparser.h --- a/epoc32/include/xmlengdomparser.h Tue Nov 24 13:55:44 2009 +0000 +++ b/epoc32/include/xmlengdomparser.h Tue Mar 16 16:12:26 2010 +0000 @@ -1,1 +1,184 @@ -xmlengdomparser.h +/* +* Copyright (c) 2004-2006 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members +* which accompanies this distribution, and is available +* at the URL "http://www.symbianfoundation.org/legal/licencesv10.html". +* +* Initial Contributors: +* Nokia Corporation - initial contribution. +* +* Contributors: +* +* Description: DOM parser functions +* +*/ + + + + + + + +#ifndef XMLENGINE_DOMPARSER_H_INCLUDED +#define XMLENGINE_DOMPARSER_H_INCLUDED + +#include + +class RXmlEngDOMImplementation; +class RXmlEngDocument; + +/** + * DOM parser class implements methods for parsing XML data. + * + * Parse XML data in one chunk. Data can be parsed from file + * or memory buffer. + * + * Sample code for parsing from buffer: + * @code + * RXmlEngDOMImplementation domImpl; + * domImpl.OpenL(); ///< opening DOM implementation object + * RXmlEngDOMParser parser; + * parser.Open( domImpl ); ///< opening parser object + * RXmlEngDocument iDoc; + * iDoc =parser.ParseL( *aInput ); ///< parsing aInput - buffer + * iDoc.Close(); ///< closing all opened objects + * parser.Close(); + * domImpl.Close(); + * @endcode + * + * Sample code for parsing from file: + * @code + * RXmlEngDOMImplementation domImpl; + * domImpl.OpenL(); ///< opening DOM implementation object + * RXmlEngDOMParser parser; + * parser.Open( domImpl ); ///< opening parser object + * RXmlEngDocument iDoc; + * iDoc =parser.ParseFileL( aFileName ); ///< parsing from file + * iDoc.Close(); ///< closing all openend objects + * parser.Close(); + * domImpl.Close(); + * @endcode + * + * @lib XmlEngineDOM.lib + * @since S60 v3.1 + */ +class RXmlEngDOMParser +{ +public: + /** + * Default constructor + */ + IMPORT_C RXmlEngDOMParser(); + + /** + * Opens the parser. + * + * @since S60 v3.2 + * @param aDOMImpl DOM implementation object + * @return KErrNone if succeed. + */ + IMPORT_C TInt Open(RXmlEngDOMImplementation& aDOMImpl); + + /** + * Closes the parser. + * + * @since S60 v3.2 + */ + IMPORT_C void Close(); + + /** + * Parses chunk of XML data from memory buffer and builds DOM RXmlEngDocument. + * + * @since S60 v3.2 + * @param aBuffer XML data buffer + * + * @leave KXmlEngErrParsing or one of general codes (e.g. KErrNoMemory) + */ + IMPORT_C void ParseChunkL(const TDesC8& aBuffer); + /** + * Creates document from parsed chunks of data. + * Should be called after parsing of allchunks. + * Ownership over returned RXmlEngDocument object is transferred to the caller of the method. + * + * @since S60 v3.2 + * @return RXmlEngDocument created document. + * + * @leave KXmlEngErrParsing or one of general codes (e.g. KErrNoMemory) + */ + IMPORT_C RXmlEngDocument FinishL(); + + /** + * Parses XML file and builds DOM RXmlEngDocument + * + * @since S60 v3.2 + * @param aRFs File server session + * @param aFileName File name + * @param aChunkSize Size of chunk (if 0 chunks won't be used) + * @return Document handle + * + * @leave KXmlEngErrParsing or one of general codes (e.g. KErrNoMemory) + */ + IMPORT_C RXmlEngDocument ParseFileL(RFs &aRFs, const TDesC& aFileName, TUint aChunkSize = 0); + + /** + * Parses XML file and builds DOM RXmlEngDocument + * + * @since S60 v3.2 + * @param aFileName File name + * @param aChunkSize Size of chunk (if 0 chunks won't be used) + * @return Document handle + * + * @leave KXmlEngErrParsing or one of general codes (e.g. KErrNoMemory) + */ + IMPORT_C RXmlEngDocument ParseFileL(const TDesC& aFileName, TUint aChunkSize = 0); + + /** + * Parses XML data from memory buffer and builds DOM RXmlEngDocument without chunks + * + * @since S60 v3.1 + * @param aBuffer XML data buffer + * @return Document handle + * + * @leave KXmlEngErrParsing code (besides system I/O error codes) + */ + IMPORT_C RXmlEngDocument ParseL(const TDesC8& aBuffer); + + /** + * Return last parsing error code. + * + * @since S60 v3.2 + * @return positive number + * + * @note Error codes are positive numbers. User can find them + * in XmlEngDErrors.h + */ + IMPORT_C TInt GetLastParsingError(); +private: + /** + * Parses XML file and builds DOM RXmlEngDocument without usage of chunks + * + * @param aRFs File server session + * @param aFileName File name + * @return Document handle + * + * @leave KXmlEngErrParsing code (besides system I/O error codes) + */ + RXmlEngDocument ParseFileWithoutChunksL(RFs& aRFs, const TDesC& aFileName); + + /** + * Cleanup internal data. + * + * @since S60 v3.2 + */ + void Cleanup(); +private: + void* iInternal; + TInt iError; + RXmlEngDOMImplementation* iImpl; +}; + + + +#endif /* XMLENGINE_DOMPARSER_H_INCLUDED */