00001 #ifndef CPPUNIT_TOOLS_XMLELEMENT_H
00002 #define CPPUNIT_TOOLS_XMLELEMENT_H
00003
00004 #include <cppunit/Portability.h>
00005
00006 #if CPPUNIT_NEED_DLL_DECL
00007 #pragma warning( push )
00008 #pragma warning( disable: 4251 ) // X needs to have dll-interface to be used by clients of class Z
00009 #endif
00010
00011 #include <cppunit/portability/CppUnitDeque.h>
00012 #include <string>
00013
00014
00015 CPPUNIT_NS_BEGIN
00016
00017
00018 class XmlElement;
00019
00020 #if CPPUNIT_NEED_DLL_DECL
00021
00022 #endif
00023
00024
00033 class CPPUNIT_API XmlElement
00034 {
00035 public:
00040 XmlElement( std::string elementName,
00041 std::string content ="" );
00042
00047 XmlElement( std::string elementName,
00048 int numericContent );
00049
00052 virtual ~XmlElement();
00053
00057 std::string name() const;
00058
00062 std::string content() const;
00063
00067 void setName( const std::string &name );
00068
00072 void setContent( const std::string &content );
00073
00076 void setContent( int numericContent );
00077
00082 void addAttribute( std::string attributeName,
00083 std::string value );
00084
00089 void addAttribute( std::string attributeName,
00090 int numericValue );
00091
00095 void addElement( XmlElement *element );
00096
00100 int elementCount() const;
00101
00107 XmlElement *elementAt( int index ) const;
00108
00115 XmlElement *elementFor( const std::string &name ) const;
00116
00122 std::string toString( const std::string &indent = "" ) const;
00123
00124 private:
00125 typedef std::pair<std::string,std::string> Attribute;
00126
00127 std::string attributesAsString() const;
00128 std::string escape( std::string value ) const;
00129
00130 private:
00131 std::string m_name;
00132 std::string m_content;
00133
00134 typedef CppUnitDeque<Attribute> Attributes;
00135 Attributes m_attributes;
00136
00137 typedef CppUnitDeque<XmlElement *> Elements;
00138 Elements m_elements;
00139 };
00140
00141
00142 CPPUNIT_NS_END
00143
00144 #if CPPUNIT_NEED_DLL_DECL
00145 #pragma warning( pop )
00146 #endif
00147
00148
00149 #endif // CPPUNIT_TOOLS_XMLELEMENT_H