diff -r 000000000000 -r e35f40988205 xml/xmldomandxpath/inc/xmlenginedom/xmlengdomparser.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/xml/xmldomandxpath/inc/xmlenginedom/xmlengdomparser.h Thu Dec 17 09:29:21 2009 +0200 @@ -0,0 +1,179 @@ +/* +* Copyright (c) 2008 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of "Eclipse Public License v1.0" +* which accompanies this distribution, and is available +* at the URL "http://www.eclipse.org/legal/epl-v10.html". +* +* Initial Contributors: +* Nokia Corporation - initial contribution. +* +* Contributors: +* +* Description: +* +*/ + +/** @file +@publishedAll +@released +*/ +#ifndef XMLENGDOMPARSER_H +#define XMLENGDOMPARSER_H + +#include + +class RXmlEngDOMImplementation; +class RXmlEngDocument; + +/** +This class implements methods for parsing XML data. XML data may be parsed +from a chunk, 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 +*/ +class RXmlEngDOMParser +{ +public: + /** Default constructor */ + IMPORT_C RXmlEngDOMParser(); + + /** + Opens the parser. The RXmlEngDOMImplementation object passed as an + argument may be used by multiple RXmlEngDOMParser objects. + + @param aDOMImpl DOM implementation object previously opened without error. + @return KErrNone if successful, system wide error code otherwise + */ + IMPORT_C TInt Open(RXmlEngDOMImplementation& aDOMImpl); + + /** Closes the parser. */ + IMPORT_C void Close(); + + /** + Parses a chunk of XML data from a memory buffer and builds an internal DOM + tree. The DOM tree can be accessed by calling FinishL() to obtain a + RXmlEngDocument. + + @see FinishL() + @param aBuffer XML data buffer + @see GetLastParsingError() + @leave KXmlEngErrParsing Parsing error + @leave KXmlEngErrWrongUseOfAPI OpenL() not previously called + @leave - One of the system-wide error codes + */ + IMPORT_C void ParseChunkL(const TDesC8& aBuffer); + + /** + Creates a document from chunks of data previously parsed by ParseChunkL(). + Should be called after parsing all chunks. Ownership of the returned + RXmlEngDocument object is transferred to the caller of the method. + RXmlEngDocument::Close() must be called when the document is no longer + required. + + @see ParseChunkL() + @return The created document + @see GetLastParsingError() + @leave KXmlEngErrParsing Parsing error + @leave KXmlEngErrWrongUseOfAPI OpenL() or ParseChunkL() not previously + called + @leave - One of the system-wide error codes + */ + IMPORT_C RXmlEngDocument FinishL(); + + /** + Parses XML file and builds a DOM RXmlEngDocument. Ownership of the + returned RXmlEngDocument object is transferred to the caller of the method. + RXmlEngDocument::Close() must be called when the document is no longer + required. + + @param aRFs Open file server session + @param aFileName File name + @param aChunkSize The number of bytes to parse from the file at a time, or 0 + if the whole file should be parsed at once. + @return The created document + @see GetLastParsingError() + @leave KXmlEngErrParsing Parsing error + @leave KXmlEngErrWrongUseOfAPI OpenL() not previously called + @leave - One of the system-wide error codes + */ + IMPORT_C RXmlEngDocument ParseFileL(RFs &aRFs, const TDesC& aFileName, TUint aChunkSize = 0); + + /** + Parses XML file and builds a DOM RXmlEngDocument. Ownership of the + returned RXmlEngDocument object is transferred to the caller of the method. + RXmlEngDocument::Close() must be called when the document is no longer + required. + + @param aFileName File name + @param aChunkSize The number of bytes to parse from the file at a time, or 0 + if the whole file should be parsed at once. + @return The created document + @see GetLastParsingError() + @leave KXmlEngErrParsing Parsing error + @leave KXmlEngErrWrongUseOfAPI OpenL() not previously called + @leave - One of the system-wide error codes + */ + IMPORT_C RXmlEngDocument ParseFileL(const TDesC& aFileName, TUint aChunkSize = 0); + + /** + Parses XML data from a memory buffer that holds the entire XML structure + and builds a DOM RXmlEngDocument. Ownership of the returned + RXmlEngDocument object is transferred to the caller of the method. + RXmlEngDocument::Close() must be called when the document is no longer + required. + + @see ParseChunkL() + @param aBuffer XML data buffer + @return The created document + @see GetLastParsingError() + @leave KXmlEngErrParsing Parsing error + @leave KXmlEngErrWrongUseOfAPI OpenL() not previously called + @leave - One of the system-wide error codes + */ + IMPORT_C RXmlEngDocument ParseL(const TDesC8& aBuffer); + + /** + Return last parsing error code. Error codes are positive numbers. + @see xmlengerrors.h + @return The last error returned by the parser or KErrNone if none + */ + IMPORT_C TInt GetLastParsingError(); + +private: + RXmlEngDocument ParseFileWithoutChunksL(RFs& aRFs, const TDesC& aFileName); + void Cleanup(); + +private: + void* iInternal; + TInt iError; + RXmlEngDOMImplementation* iImpl; +}; + +#endif /* XMLENGDOMPARSER_H */ +