#ifndef __XML_H #define __XML_H class TXmlItem; typedef bool (*XmlItemCallback)(TXmlItem& item, void* jolly); class TXmlItem : public wxObject { DECLARE_DYNAMIC_CLASS(TXmlItem); wxString m_strTag, m_strText; wxHashTable* m_Attributes; wxList* m_Children; protected: wxString GetWord(wxInputStream& input) const; int ReadTag(wxInputStream& input); TXmlItem& AddChild(TXmlItem* pItem); public: const wxString& GetTag() const { return m_strTag; } void SetTag(const wxChar* strTag) { m_strTag = strTag; } const wxString& GetText() const { return m_strText; } void SetText(const wxChar* str) { m_strText = str; } TXmlItem& AddEnclosedText(const wxChar* str); wxString GetEnclosedText() const; TXmlItem& SetAttr(const wxChar* strAttr, const wxChar* strVal); wxString GetAttr(const wxChar* strAttr) const; TXmlItem& SetAttr(const wxChar* strAttr, long nVal); TXmlItem& AddChild(const wxChar* strTag); TXmlItem& AddSoapString(const wxChar* name, const wxChar* value, bool typized = false); TXmlItem& AddSoapInt(const wxChar* name, int value, bool typized = false); wxString GetSoapString(const wxChar* name, const wxChar* def = "") const; long GetSoapInt(const wxChar* name, long def = 0) const; int GetChildren() const; TXmlItem* GetChild(size_t n) const; void RemoveLastChild(); bool Read(wxInputStream& input); void Write(wxOutputStream& output, int nTab) const; wxString AsString() const; void Save(const wxChar* strFilename) const; TXmlItem* ForEach(XmlItemCallback cb, void* jolly = NULL); TXmlItem* FindFirst(const wxChar* strTag) const; TXmlItem(); ~TXmlItem(); }; TXmlItem& operator<<(TXmlItem& item, const wxChar* str); wxOutputStream& operator<<(wxOutputStream& outf, const wxChar* str); wxOutputStream& operator<<(wxOutputStream& outf, wxString str); wxInputStream& operator>>(wxInputStream& inf, wxString& str); void Spaces(wxOutputStream& outf, int nSpaces); void WriteXmlString(wxOutputStream& outf, const wxChar* str); int hex2int(const wxChar* str); #define endl "\r\n"; #endif