www.pudn.com > simplec++codeforp2p.rar > xml.h
// ------------------------------------------------ // File : xml.h // Date: 4-apr-2002 // Author: giles // Desc: // // (c) 2002 peercast.org // ------------------------------------------------ // This program is free software; you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation; either version 2 of the License, or // (at your option) any later version. // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // ------------------------------------------------ #ifndef _XML_H #define _XML_H //----------------------- #include "common.h" #include//----------------------- class Stream; //----------------------- class XML { public: class Node { public: class Attribute { public: int namePos,valuePos; }; Node(const char *,...); void init(); ~Node(); void add(Node *); void write(Stream &,int); // output, level char *getName() {return getAttrName(0);} char *getAttrValue(int i) {return &attrData[attr[i].valuePos];} char *getAttrName(int i) {return &attrData[attr[i].namePos];} char *getContent() {return contData; } int getBinaryContent(void *, int); void setAttributes(const char *); void setContent(const char *); void setBinaryContent(void *, int); Node *findNode(const char *); char *findAttr(const char *); int findAttrInt(const char *); int findAttrID(const char *); char *contData,*attrData; Attribute *attr; int numAttr; Node *child,*parent,*sibling; void *userPtr; }; XML() { root = NULL; } ~XML(); void setRoot(Node *n); void write(Stream &); void writeCompact(Stream &); void writeHTML(Stream &); void read(Stream &); Node *findNode(const char *n); Node *root; }; #endif