return m_ss.str().size();
}
-XMLFormatter::XMLFormatter(bool p)
+const char *XMLFormatter::XML_1_DTD =
+ "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n";
+
+XMLFormatter::XMLFormatter(const char *dtd, bool p)
: m_pretty(p)
{
+ if (dtd)
+ m_dtd = dtd;
reset();
}
void XMLFormatter::reset()
{
m_ss.clear();
+ m_ss << m_dtd;
+ if (m_pretty) {
+ m_ss << "\n";
+ }
m_pending_string.clear();
m_sections.clear();
m_pending_string_name.clear();
TEST(XmlFormatter, Simple1) {
ostringstream oss;
- XMLFormatter fmt(false);
+ XMLFormatter fmt(NULL, false);
fmt.open_object_section("foo");
fmt.dump_int("a", 1);
fmt.dump_int("b", 2);
TEST(XmlFormatter, Simple2) {
ostringstream oss;
- XMLFormatter fmt(false);
+ XMLFormatter fmt(NULL, false);
fmt.open_object_section("foo");
fmt.open_object_section("bar");
fmt.dump_int("int", 0xf00000000000ll);
TEST(XmlFormatter, Empty) {
ostringstream oss;
- XMLFormatter fmt(false);
+ XMLFormatter fmt(NULL, false);
fmt.flush(oss);
ASSERT_EQ(oss.str(), "");
}
TEST(XmlFormatter, DumpStream1) {
ostringstream oss;
- XMLFormatter fmt(false);
+ XMLFormatter fmt(NULL, false);
fmt.dump_stream("blah") << "hithere";
fmt.flush(oss);
ASSERT_EQ(oss.str(), "<blah>hithere</blah>");
TEST(XmlFormatter, DumpStream2) {
ostringstream oss;
- XMLFormatter fmt(false);
+ XMLFormatter fmt(NULL, false);
fmt.open_array_section("foo");
fmt.dump_stream("blah") << "hithere";
TEST(XmlFormatter, DumpStream3) {
ostringstream oss;
- XMLFormatter fmt(false);
+ XMLFormatter fmt(NULL, false);
fmt.open_array_section("foo");
fmt.dump_stream("blah") << "hithere";
fmt.flush(oss);
ASSERT_EQ(oss.str(), "<foo><blah>hithere</blah><pi>3.14</pi></foo>");
}
+
+TEST(XmlFormatter, DTD) {
+ ostringstream oss;
+ XMLFormatter fmt(XMLFormatter::XML_1_DTD, false);
+
+ fmt.open_array_section("foo");
+ fmt.dump_stream("blah") << "hithere";
+ fmt.dump_float("pi", 3.14);
+ fmt.close_section();
+ fmt.flush(oss);
+ ASSERT_EQ(oss.str(), "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"
+ "<foo><blah>hithere</blah><pi>3.14</pi></foo>");
+}