00001 /* 00002 * $Id: dsXMLParser.h,v 1.5 2003/08/27 15:40:41 dsamersoff Exp $ 00003 */ 00004 00005 #ifndef dsXMLParser_h 00006 #define dsXMLParser_h 00007 00008 #include <dsHashTable.h> 00009 #include <dsDocument.h> 00010 00011 class dsDocument; 00012 00021 class dsXMLParser 00022 { 00023 protected: 00024 dsDocument * _owner; 00025 dsHashTable * _nameSpace; // hold namespaces 00026 00027 int _max_ocnt; 00028 int _ocnt; 00029 char *_os; 00030 00031 int _lineno; 00032 00033 void read(std::istream& is, dsNode *root); 00034 void write(std::ostream& os, dsNode *root); 00035 void cleanup(dsNode *root); 00036 00037 dsNode *findChild(const DOMString tag, dsNode *root, dsNode::dsNodeTypes type); 00038 dsNode *textChild(dsNode *root); 00039 00040 00041 dsXMLParser(dsDocument *owner); 00042 ~dsXMLParser(); 00043 00044 private: 00045 /* internals */ 00046 void getElementsByTagName(DOMString tagName, dsNode *root, dsNodeList * l); 00047 void ReadEntity(std::istream& is, dsNode * cp); 00048 00049 void Os(char ch); 00050 char * Os(); 00051 00052 00053 00054 friend class dsDocument; 00055 friend class dsAttr; 00056 00057 }; 00058 00059 #endif