23 #ifndef __MYGUI_XML_DOCUMENT_H__
24 #define __MYGUI_XML_DOCUMENT_H__
80 std::string
print()
const {
return getValueName(value); }
83 const char * getValueName(
int _index)
const
85 static const char * values[
MAX + 1] =
87 "Failed to open XML file",
88 "Failed to ceate XML file",
89 "XML file contain incorrect content",
90 "XML file contain not closed elements",
91 "XML file without declaration",
92 "XML file contain closed but not opened element",
93 "XML file contain inconsistent elements",
94 "XML file contain more than one declaration",
95 "XML file contain more than one root element",
96 "XML file contain incorrect attribute",
99 return values[(_index < MAX && _index >= 0) ? _index :
MAX];
125 bool next(
const std::string& _name);
131 #ifndef MYGUI_DONT_USE_OBSOLETE
134 bool nextNode() {
return next(); }
135 MYGUI_OBSOLETE(
"use : bool ElementEnumerator::next(const std::string& _name)")
136 bool nextNode(const std::
string& _name) {
return next(_name); }
140 #endif // MYGUI_DONT_USE_OBSOLETE
144 VectorElement::iterator m_current, m_end;
160 void save(std::ostream& _stream,
size_t _level);
163 ElementPtr createChild(
const std::string& _name,
const std::string& _content =
"");
165 template <
typename T>
166 void addAttribute(
const std::string &_key,
const T& _value)
171 void addAttribute(
const std::string& _key,
const std::string& _value);
173 void removeAttribute(
const std::string& _key);
175 void setAttribute(
const std::string& _key,
const std::string& _value);
177 template <
typename T>
178 void addContent(
const T& _content)
183 void addContent(
const std::string& _content);
185 template <
typename T>
186 void setContent(
const T& _content)
191 void setContent(
const std::string& _content) { mContent = _content; }
195 bool findAttribute(
const std::string& _name, std::string& _value);
196 std::string findAttribute(
const std::string& _name);
198 const std::string&
getName()
const {
return mName; }
210 #ifndef MYGUI_DONT_USE_OBSOLETE
212 template <
typename T>
213 MYGUI_OBSOLETE(
"use : template <typename T> void Element::addAttribute(const std::string &_key, const T& _value)")
214 void addAttributes(const std::
string &_key, const T& _value) { addAttribute<T>(_key, _value); }
215 MYGUI_OBSOLETE(
"use : void Element::addAttribute(const std::string& _key, const std::string& _value)")
216 void addAttributes(const std::
string& _key, const std::
string& _value) { addAttribute(_key, _value); }
218 template <
typename T>
219 MYGUI_OBSOLETE(
"use : template <typename T> void Element::addContent(const T& _content)")
220 void addBody(const T& _content) { addContent<T>(_content); }
221 MYGUI_OBSOLETE(
"use : void Element::addContent(const std::string& _content)")
222 void addBody(const std::
string& _content) { addContent(_content); }
223 template <
typename T>
224 MYGUI_OBSOLETE(
"use : template <typename T> void Element::setContent(const T& _content)")
225 void setBody(const T& _content) { setContent<T>(_content); }
226 MYGUI_OBSOLETE(
"use : void Element::setContent(const std::string& _content)")
227 void setBody(const std::
string& _content) { setContent(_content); }
230 const std::
string& getBody() {
return getContent(); }
231 MYGUI_OBSOLETE(
"use : ElementEnumerator Element::getElementEnumerator()")
234 #endif // MYGUI_DONT_USE_OBSOLETE
238 std::string mContent;
255 bool open(
const std::string& _filename);
258 bool open(
const std::wstring& _filename);
261 bool open(std::istream& _stream);
268 bool save(
const std::string& _filename);
271 bool save(
const std::wstring& _filename);
273 bool save(std::ostream& _stream);
279 std::string getLastError();
283 ElementPtr createDeclaration(
const std::string& _version =
"1.0",
const std::string& _encoding =
"UTF-8");
284 ElementPtr createRoot(
const std::string& _name);
289 #ifndef MYGUI_DONT_USE_OBSOLETE
291 MYGUI_OBSOLETE(
"use : ElementPtr Document::createDeclaration(const std::string& _version, const std::string& _encoding)")
292 ElementPtr createInfo(const std::
string& _version = "1.0", const std::
string& _encoding = "UTF-8") {
return createDeclaration(_version, _encoding); }
294 #endif // MYGUI_DONT_USE_OBSOLETE
297 void setLastFileError(
const std::string& _filename) { mLastErrorFile = _filename; }
299 void setLastFileError(
const std::wstring& _filename) { mLastErrorFile =
UString(_filename).
asUTF8(); }
301 bool parseTag(
ElementPtr &_currentNode, std::string _content);
303 bool checkPair(std::string &_key, std::string &_value);
305 bool parseLine(std::string& _line,
ElementPtr& _element);
308 size_t find(
const std::string& _text,
char _char,
size_t _start = 0);
310 void clearDeclaration();
316 ErrorType mLastError;
317 std::string mLastErrorFile;
334 #endif // __MYGUI_XML_DOCUMENT_H__