00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029 #ifndef TEUCHOS_XMLOBJECTIMPLEM_H
00030 #define TEUCHOS_XMLOBJECTIMPLEM_H
00031
00036 #include "Teuchos_Hashtable.hpp"
00037 #include "Teuchos_RefCountPtr.hpp"
00038
00039 namespace Teuchos
00040 {
00041
00042 class XMLObject;
00043
00048 class XMLObjectImplem
00049 {
00050 public:
00052 XMLObjectImplem(const string& string);
00053
00055 XMLObjectImplem* deepCopy() const ;
00056
00058 void addAttribute(const string& name, const string& value);
00059
00061 void addChild(const XMLObject& child);
00062
00064 void addContent(const string& contentLine);
00065
00067 string toString() const ;
00068
00070 const string& getTag() const {return tag_;}
00071
00073 string header() const ;
00074
00076 string footer() const {return "</" + getTag() + ">";}
00077
00079 bool hasAttribute(const string& name) const
00080 {return attributes_.containsKey(name);}
00081
00083 const string& getAttribute(const string& name) const
00084 {return attributes_.get(name);}
00085
00087 int numChildren() const ;
00088
00090 const XMLObject& getChild(int i) const ;
00091
00093 int numContentLines() const {return content_.length();}
00094
00096 const string& getContentLine(int i) const {return content_[i];}
00097
00098 private:
00099 string tag_;
00100 Hashtable<string, string> attributes_;
00101 Array<XMLObject> children_;
00102 Array<string> content_;
00103 };
00104
00105 }
00106
00107 #endif
00108