00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021 #ifndef SEN_XMLREADER_H
00022 #define SEN_XMLREADER_H
00023
00024
00025 #include <Xml/Parser.h>
00026 #include <Xml/ParserFeature.h>
00027 #include <Xml/ContentHandler.h>
00028 #include <badesca.h>
00029
00030 using namespace Xml;
00031
00032
00033 const TInt KSenDefaultParserFeature = (TInt)EReportNamespaceMapping;
00034
00035
00036
00037
00038 class MSenContentHandlerClient;
00039 class RFs;
00040
00041
00042
00051 class CSenXmlReader : public CBase, public MContentHandler
00052 {
00053 public:
00054
00062 IMPORT_C static CSenXmlReader* NewL();
00063
00072 IMPORT_C static CSenXmlReader* NewLC();
00073
00084 IMPORT_C static CSenXmlReader* NewL(TInt aParserFeature);
00085
00101 IMPORT_C static CSenXmlReader* NewLC(TInt aParserFeature);
00102
00114 IMPORT_C static CSenXmlReader* NewL(const TDesC8& aParserMimeType);
00115
00127 IMPORT_C static CSenXmlReader* NewLC(const TDesC8& aParserMimeType);
00128
00138 IMPORT_C static CSenXmlReader* NewL(const TDesC8& aParserMimeType,
00139 TInt aParserFeature);
00140
00155 IMPORT_C static CSenXmlReader* NewLC(const TDesC8& aParserMimeType,
00156 TInt aParserFeature);
00157
00161 IMPORT_C virtual ~CSenXmlReader();
00162
00163
00164
00171 IMPORT_C virtual void SetContentHandler(
00172 MSenContentHandlerClient& aContentHandler);
00173
00179 IMPORT_C virtual TInt EnabledParserFeature();
00180
00184 IMPORT_C virtual TInt ParserFeature();
00185
00195 TInt SetParserFeature(TInt aParserFeature);
00196
00234 IMPORT_C void ParseL(const TDesC8& aBuff);
00235
00242 IMPORT_C void ParseL(RFs &aRFs, const TDesC& aFileToParse);
00243
00244
00245
00246
00247
00256 virtual void OnStartDocumentL(const RDocumentParameters& aDocParam,
00257 TInt aErrorCode);
00258
00267 virtual void OnEndDocumentL(TInt aErrorCode);
00268
00277 virtual void OnStartElementL(const RTagInfo& aElement,
00278 const RAttributeArray& aAttributes,
00279 TInt aErrorCode);
00280
00289 virtual void OnEndElementL(const RTagInfo& aElement, TInt aErrorCode);
00290
00297 virtual void OnContentL(const TDesC8& aBytes, TInt aErrorCode);
00298
00307 virtual void OnStartPrefixMappingL(const RString& aPrefix,
00308 const RString& aUri,
00309 TInt aErrorCode);
00310
00319 virtual void OnEndPrefixMappingL(const RString& aPrefix, TInt aErrorCode);
00320
00329 virtual void OnIgnorableWhiteSpaceL(const TDesC8& aBytes, TInt aErrorCode);
00330
00339 virtual void OnSkippedEntityL(const RString& aName, TInt aErrorCode);
00340
00349 virtual void OnProcessingInstructionL(const TDesC8& aTarget,
00350 const TDesC8& aData,
00351 TInt aErrorCode);
00352
00369 virtual void OnError(TInt aErrorCode);
00370
00379 virtual TAny* GetExtendedInterface(const TInt32 aUid);
00380
00381 protected:
00382
00386 IMPORT_C CSenXmlReader(TInt aParserFeature);
00387
00393 void ConstructL(const TDesC8& aParserMimeType);
00394
00395
00396
00401 void RecreateParserL();
00402
00403 private:
00404 static void CleanupParser(TAny* apReader);
00405
00406 void CleanUp();
00407
00408 private:
00409
00410 CParser* iParser;
00411
00412 MSenContentHandlerClient* iContentHandler;
00413
00414 CDesC8Array* ipNsPrefixes;
00415
00416 CDesC8Array* ipNsUris;
00417
00418 RStringPool iStringPool;
00419
00420 TInt iEnabledFeature;
00421 };
00422
00423 #endif // SEN_XMLREADER_H
00424
00425
00426