#ifndef XML_ASSOCIATE_DTD_H #define XML_ASSOCIATE_DTD_H #include #include #include #include "wrapexpat.h" struct DtdData : public ParserData { std::string buffer, path, publicIdentifier; bool rootElementSeen, insideDtd; }; class XmlAssociateDtd : public WrapExpat { public: XmlAssociateDtd ( const std::string& path = "", const std::string& publicIdentifier = "", size_t size = BUFSIZ ); virtual ~XmlAssociateDtd(); std::string getBuffer() { return d->buffer; } private: std::auto_ptr d; std::string encoding; static void XMLCALL start ( void *data, const XML_Char *el, const XML_Char **attr ); static void XMLCALL end ( void *data, const XML_Char *el ); static void XMLCALL defaulthandler ( void *data, const XML_Char *s, int len ); static void XMLCALL startdoctypehandler ( void *userData, const XML_Char *doctypeName, const XML_Char *sysid, const XML_Char *pubid, int has_internal_subset ); static void XMLCALL enddoctypehandler ( void *userData ); }; #endif