00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013 #ifndef _B_XML2_PARSER_H
00014 #define _B_XML2_PARSER_H
00015
00016 #include <support/Atom.h>
00017 #include <support/IByteStream.h>
00018 #include <support/Binder.h>
00019 #include <support/Vector.h>
00020
00021 #include <xml/IXMLOStr.h>
00022 #include <xml/XMLDefs.h>
00023 #include <xml/DataSource.h>
00024
00025 #if _SUPPORTS_NAMESPACE
00026 namespace palmos {
00027 namespace xml {
00028 using namespace support;
00029 #endif
00030
00031
00032
00033 class BXMLParseContext;
00034 class BParser;
00035 class BCreator;
00036
00037
00038
00039
00040 class BXMLParseContext
00041 {
00042 public:
00043 BXMLParseContext();
00044 virtual ~BXMLParseContext();
00045
00046
00047
00048
00049 int32_t line;
00050 int32_t column;
00051
00052
00053 virtual status_t OnDocumentBegin(uint32_t flags);
00054
00055
00056
00057 virtual status_t OnDocumentEnd();
00058
00059
00060 virtual status_t OnDocumentFail();
00061
00062
00063
00064
00065
00066
00067 virtual status_t OnStartTag( SString & name,
00068 SValue & attributes );
00069
00070 virtual status_t OnEndTag( SString & name );
00071
00072 virtual status_t OnTextData( const char * data,
00073 int32_t size );
00074
00075 virtual status_t OnCData( const char * data,
00076 int32_t size );
00077
00078 virtual status_t OnComment( const char * data,
00079 int32_t size );
00080
00081 virtual status_t OnDocumentTypeBegin( SString & name );
00082
00083 virtual status_t OnExternalSubset( SString & publicID,
00084 SString & systemID,
00085 uint32_t parseFlags );
00086
00087 virtual status_t OnInternalSubsetBegin();
00088
00089 virtual status_t OnInternalSubsetEnd();
00090
00091 virtual status_t OnDocumentTypeEnd();
00092
00093 virtual status_t OnProcessingInstruction(SString & target,
00094 SString & data );
00095
00096 virtual status_t OnElementDecl( SString & name,
00097 SString & data );
00098
00099 virtual status_t OnAttributeDecl( SString & element,
00100 SString & name,
00101 SString & type,
00102 SString & behavior,
00103 SString & defaultVal );
00104
00105 virtual status_t OnInternalParsedEntityDecl( SString & name,
00106 SString & internalData,
00107 bool parameter,
00108 uint32_t parseFlags );
00109
00110 virtual status_t OnExternalParsedEntityDecl( SString & name,
00111 SString & publicID,
00112 SString & systemID,
00113 bool parameter,
00114 uint32_t parseFlags );
00115
00116 virtual status_t OnUnparsedEntityDecl( SString & name,
00117 SString & publicID,
00118 SString & systemID,
00119 SString & notation );
00120
00121 virtual status_t OnNotationDecl( SString & name,
00122 SString & value );
00123
00124
00125
00126
00127
00128 virtual status_t OnGeneralParsedEntityRef( SString & name );
00129
00130
00131
00132
00133
00134
00135 virtual status_t OnGeneralParsedEntityRef( SString & name,
00136 SString & replacement );
00137
00138
00139
00140
00141
00142
00143 virtual status_t OnParameterEntityRef( SString & name );
00144
00145
00146
00147
00148 virtual status_t OnParameterEntityRef( SString & name,
00149 SString & replacement );
00150
00151
00152
00153
00154
00155
00156
00157
00158
00159
00160
00161
00162 virtual status_t OnError(status_t error, bool fatal, int32_t debugLineNo,
00163 uint32_t code = 0, void * data = NULL);
00164
00165 };
00166
00167
00168 class BCreator : public virtual SAtom
00169 {
00170 public:
00171 BCreator();
00172
00173 virtual ~BCreator();
00174
00175 virtual status_t OnStartTag( SString & name,
00176 SValue & attributes,
00177 sptr<BCreator> & newCreator );
00178
00179 virtual status_t OnEndTag( SString & name );
00180
00181 virtual status_t OnText( SString & data );
00182
00183 virtual status_t OnComment( SString & name );
00184
00185 virtual status_t OnProcessingInstruction(SString & target,
00186 SString & data );
00187
00188 virtual status_t Done();
00189 };
00190
00191
00192
00193
00194 status_t _IMPEXP_SUPPORT ParseXML(BXMLParseContext *context, BXMLDataSource *data, uint32_t flags = 0);
00195 status_t _IMPEXP_SUPPORT ParseXML(const sptr<BCreator>& creator, BXMLDataSource *data, uint32_t flags = 0);
00196
00197
00198 #if _SUPPORTS_NAMESPACE
00199 };
00200 };
00201 #endif
00202
00203 #endif // _B_XML2_PARSER_H