/** Copyright (c) 2003-2005 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 "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: Wrapper to XML parser interface. Loads the inline and external XML metadata* and populates the service provider metadata information. This class* uses Symbian SAX parser to load the metadata information.**/#ifndef LIW_XMLHANDLER_H#define LIW_XMLHANDLER_H#include <SenXmlReader.h>#include <MSenContentHandlerClient.h>#include <xml/contenthandler.h>#include <e32capability.h>// CONSTANTSconst TInt KMaxBufLen = 255;// MACROS// DATA TYPES// FUNCTION PROTOTYPES// FORWARD DECLARATIONSclass CLiwServiceData;class CLiwList;/*** Wrapper class for XML parser. This class is used to parse inline* and file-based external metadata definitions. SAX (Simple API for XML)* parser is used to parse the XML content.** @lib ServiceHandler.lib** @see MSenContentHandlerClient* @see CSenXmlReader* @see CLiwServiceData**/class CLiwXmlHandler : public CBase, public MSenContentHandlerClient{public: /* * Creates and returns an instance of \c CLiwXmlHandler * * @return an instance of \c CLiwXmlHandler */ static CLiwXmlHandler* NewL(); /* * Creates and returns an instance of \c CLiwXmlHandler * Leaves the created instance in the cleanupstack. * * @return an instance of \c CLiwXmlHandler */ static CLiwXmlHandler* NewLC(); /* * Destructor */ virtual ~CLiwXmlHandler(); /** * Receive notification of the beginning of a document. * @return KErrNone or some of the system-wide Symbian error codes. */ virtual TInt StartDocument(); /** * Receive notification of the end of a document. * @return KErrNone or some of the system-wide Symbian error codes. */ virtual TInt EndDocument(); /** * Receive notification of the start of an element. * @return KErrNone or some of the system-wide Symbian error codes. */ virtual TInt StartElement( const TDesC8& /*aURI*/, const TDesC8& /*aLocalName*/, const TDesC8& /*aName*/, const RAttributeArray& /* apAttrs */); /** * Receive notification of the end of an element. * @return KErrNone or some of the system-wide Symbian error codes. */ virtual TInt EndElement( const TDesC8& /*aURI*/, const TDesC8& /*aLocalName*/, const TDesC8& /*aName*/); /** * Receive notification of the character data found in the XML document. * @return KErrNone or some of the system-wide Symbian error codes. */ virtual TInt Characters(const TDesC8& /*aBuf*/, const TInt /*aStart*/, const TInt /*aLength*/); /** * Called when there is an error in parsing. * @return KErrNone or some of the system-wide Symbian error codes. */ inline virtual TInt Error(TInt /*aErrorCode*/); /** * Loads service data from an external file specified * in aFileToParse parameter. * * @param aFileToParse a valid well defined XML file having metadata definition * @param aServiceData service data to be populated with service provider information. * The caller should pass a properly instantiated pointer to CLiwServiceData instance * * @return KErrNone if the loading of service data is successful KSrvDataLoadFailed if the loading of XML file failed */ TInt LoadServiceData(const TDesC& aFileToParse, CLiwServiceData* aServiceData); /** * Loads service data from a XML data buffer. The passed XML data buffer * should be well defined and well formatted valid XML content. * * @param aXmlBuffer a valid well defined and well formatted XML data content * @param aServiceData service data to be populated with service provider information. * The caller should pass a properly instantiated pointer to CLiwServiceData instance * * @return KErrNone if the loading of service data is successful KSrvDataLoadFailed if the loading of XML buffer content failed */ TInt LoadServiceData(const TDesC8& aXmlBuffer, CLiwServiceData* aServiceData); /* * Enumeration IDs corresponding to XML parsing status */ enum TLiwXmlParseStatus { ESrvDataLoadSuccess=0, ESrvDataLoadFailed, //General failures other than below ESrvDataFileNotFnd, ESrvDataInvalidFile, //Parse error ESrvDataCapNotSpecified };private: //private default constructor CLiwXmlHandler(); //second phase constructor void ConstructL(); //the SAX parser instance CSenXmlReader* iXmlHandler; //the service data instance to be populated with metadata information CLiwServiceData* iServiceData; HBufC8* iBuffer; TBuf8<KMaxBufLen> startBuf;};#endif // End of File