00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021 #ifndef _XMLSERIALIZERH
00022 #define _XMLSERIALIZERH
00023
00024 #include <iostream>
00025 #include <sstream>
00026 #include <string>
00027 #include <vector>
00028 #ifdef HAVE_CONFIG_H //
00029 #include <config.h>
00030 #endif
00031 #include "wsdlpull_export.h"
00032
00033 class WSDLPULL_EXPORT XmlSerializer {
00034
00035 public:
00036 XmlSerializer(std::ostream &os, std::string encoding="utf");
00037 XmlSerializer(std::string encoding="utf");
00038 ~XmlSerializer(void);
00039 void docdecl(std::string dd);
00040 void startDocument(std::string encoding,
00041 bool standalone);
00042 XmlSerializer& startTag(std::string nsp, std::string name);
00043 XmlSerializer& attribute(std::string nsp,
00044 std::string name,
00045 std::string value);
00046 XmlSerializer& endTag(std::string nsp, std::string name);
00047 void endDocument();
00048 void entityRef(std::string name);
00049 bool getFeature(std::string name);
00050 std::string getPrefix(std::string nsp, bool create);
00051 std::string getPrefix(std::string nsp,
00052 bool includeDefault,
00053 bool create);
00054
00055 void ignorableWhitespace(std::string s);
00056 void setFeature(std::string name, bool value);
00057 void setPrefix(std::string prefix, std::string nsp);
00058
00059 void flush();
00060 std::string getNamespace();
00061 std::string getName();
00062 int getDepth();
00063 XmlSerializer& text(std::string txt);
00064 XmlSerializer& text(std::string txt, int start, int len);
00065 void cdsect(std::string data);
00066 void comment(std::string comment);
00067 void processingInstruction(std::string pi);
00068
00069
00070 private:
00071 std::ostream& writer;
00072 bool pending;
00073 int auto_;
00074 int depth;
00075 std::string encoding;
00076 std::vector<std::string> elementStack,nspStack;
00077
00078 std::vector<int> nspCounts;
00079
00080 std::vector<bool> indent;
00081 bool unicode;
00082 void check(bool close);
00083 void writeEscaped(std::string s, int quot);
00084 void exception (std::string desc);
00085 void init();
00086 };
00087
00088 #endif