25 #ifndef IGLOO_XMLWRITER_HPP 26 #define IGLOO_XMLWRITER_HPP 42 os <<
"<?xml version=\"1.0\" encoding=\"utf-8\"?>";
44 ~
XmlWriter(
void) { assert(elements.empty()); }
48 std::stack<XmlElement*> elements;
75 wr.putc(
'<').puts(name);
77 wr.elements.push(
this);
82 if (!wr.elements.empty() && wr.elements.top() ==
this) {
87 wr.puts(
"</").puts(name).putc(
'>');
92 XmlElement& attr(
const char* attr_name,
const char* value) {
93 assert(attr_name != 0);
96 wr.putc(
' ').puts(attr_name).puts(
"=\"");
103 XmlElement& attr(
const char* attr_name,
const std::string& value) {
104 return attr(attr_name, value.c_str());
109 XmlElement& attr(
const char* attr_name, T value) {
110 std::stringstream ss;
112 attr(attr_name, ss.str());
125 XmlElement& contents(
const std::string& str) {
126 return contents(str.c_str());
132 std::stringstream ss;
142 wr.puts(
"<![CDATA[");
150 return cdata(str.c_str());
161 case '&': wr.puts(
"&");
break;
162 case '<': wr.puts(
"<");
break;
163 case '>': wr.puts(
">");
break;
164 case '\'': wr.puts(
"'");
break;
165 case '"': wr.puts(
""");
break;
166 default: wr.putc(*str);
break;
172 void check_parent() {
173 if (!wr.elements.empty() && wr.elements.top()->tagopen) {
175 wr.elements.top()->tagopen =
false;
Definition: xmlwriter.h:37
Definition: xmlwriter.h:68