00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00033
#ifndef __vtkXMLParser_h
00034
#define __vtkXMLParser_h
00035
00036
#include "vtkObject.h"
00037
00038
extern "C"
00039 {
00040
void vtkXMLParserStartElement(
void*,
const char*,
const char**);
00041
void vtkXMLParserEndElement(
void*,
const char*);
00042
void vtkXMLParserCharacterDataHandler(
void*,
const char*,
int);
00043 }
00044
00045 class VTK_IO_EXPORT vtkXMLParser :
public vtkObject
00046 {
00047
public:
00048 vtkTypeRevisionMacro(vtkXMLParser,
vtkObject);
00049
void PrintSelf(ostream& os,
vtkIndent indent);
00050
00051
static vtkXMLParser*
New();
00052
00053
00055
00056 vtkSetMacro(Stream, istream*);
00057 vtkGetMacro(Stream, istream*);
00058
00060
00062
virtual int Parse();
00063
00065
00067
virtual int Parse(
const char* inputString);
00068
virtual int Parse(
const char* inputString,
unsigned int length);
00070
00072
00077
virtual int InitializeParser();
00078
virtual int ParseChunk(
const char* inputString,
unsigned int length);
00079
virtual int CleanupParser();
00081
00083
00084 vtkSetStringMacro(FileName);
00085 vtkGetStringMacro(FileName);
00087
00088
protected:
00089 vtkXMLParser();
00090 ~vtkXMLParser();
00091
00092
00093 istream* Stream;
00094
00095
00096 char* FileName;
00097
00098
00099
00100 int ParseError;
00101
00102
00103 const char* InputString;
00104 int InputStringLength;
00105
00106
00107 void* Parser;
00108
00109
00110
00111
virtual int ParseXML();
00112
00113
00114
00115
00116
00117
virtual int ParsingComplete();
00118
00119
00120
00121
00122
00123
00124
virtual void StartElement(
const char* name,
const char** atts);
00125
00126
00127
00128
virtual void EndElement(
const char* name);
00129
00130
00131
virtual void CharacterDataHandler(
const char* data,
int length);
00132
00133
00134
virtual void ReportStrayAttribute(
const char* element,
const char* attr,
00135
const char* value);
00136
00137
00138
virtual void ReportMissingAttribute(
const char* element,
const char* attr);
00139
00140
00141
virtual void ReportBadAttribute(
const char* element,
const char* attr,
00142
const char* value);
00143
00144
00145
virtual void ReportUnknownElement(
const char* element);
00146
00147
00148
virtual void ReportXmlParseError();
00149
00150
00151
unsigned long GetXMLByteIndex();
00152
00153
00154
virtual int ParseBuffer(
const char* buffer,
unsigned int count);
00155
00156
00157
int ParseBuffer(
const char* buffer);
00158
00159
00160
00161
static int IsSpace(
char c);
00162
00163
00164
friend void vtkXMLParserStartElement(
void*,
const char*,
const char**);
00165
friend void vtkXMLParserEndElement(
void*,
const char*);
00166
friend void vtkXMLParserCharacterDataHandler(
void*,
const char*,
int);
00167
00168
00169
private:
00170 vtkXMLParser(
const vtkXMLParser&);
00171
void operator=(
const vtkXMLParser&);
00172 };
00173
00174
#endif