summaryrefslogtreecommitdiff
path: root/tests/writer_string.cpp
diff options
context:
space:
mode:
authorArseny Kapoulkine <arseny.kapoulkine@gmail.com>2015-03-18 08:34:23 -0700
committerArseny Kapoulkine <arseny.kapoulkine@gmail.com>2015-03-18 09:59:17 -0700
commit5f996eba6deaa804bf4caced8acc65d8626720d6 (patch)
tree6f950e655956c17b657f1239ab0a9f655bf83c87 /tests/writer_string.cpp
parent51da129b50a0b99ee85af20cc4a4b77f6bc823ff (diff)
Do not emit surrounding whitespace for text nodes
Previously we omitted extra whitespace for single PCDATA/CDATA children, but in mixed content there was extra indentation before/after text nodes. One of the problems with that is that the text that you saved is not exactly the same as the parsing result using default flags (parse_trim_pcdata helps). Another problem is that parse-format cycles do not have a fixed point for mixed content - the result expands indefinitely. Some XML libraries, like Python minidom, have the same issue, but this is definitely a problem. Pretty-printing mixed content is hard. It seems that the only other sensible choice is to switch mixed content nodes to raw formatting. In a way the code in this change is a weaker version of that - it removes indentation around text nodes but still keeps it around element siblings/children. Thus we can switch to mixed-raw formatting at some point later, which will be a superset of the current behavior. To do this we have to either switch at the first text node (.NET XmlDocument does that), or scan the children of each element for a possible text node and switch before we output the first child. The former behavior seems non-intuitive (and a bit broken); unfortunately, the latter behavior can cost up to 20% of the output time for trees *without* mixed content. Fixes #13.
Diffstat (limited to 'tests/writer_string.cpp')
-rw-r--r--tests/writer_string.cpp6
1 files changed, 3 insertions, 3 deletions
diff --git a/tests/writer_string.cpp b/tests/writer_string.cpp
index 661c792..26bca8d 100644
--- a/tests/writer_string.cpp
+++ b/tests/writer_string.cpp
@@ -45,7 +45,7 @@ std::string save_narrow(const pugi::xml_document& doc, unsigned int flags, pugi:
{
xml_writer_string writer;
- doc.save(writer, STR(""), flags, encoding);
+ doc.save(writer, STR("\t"), flags, encoding);
return writer.as_narrow();
}
@@ -59,7 +59,7 @@ std::string write_narrow(pugi::xml_node node, unsigned int flags, pugi::xml_enco
{
xml_writer_string writer;
- node.print(writer, STR(""), flags, encoding);
+ node.print(writer, STR("\t"), flags, encoding);
return writer.as_narrow();
}
@@ -73,7 +73,7 @@ std::basic_string<wchar_t> write_wide(pugi::xml_node node, unsigned int flags, p
{
xml_writer_string writer;
- node.print(writer, STR(""), flags, encoding);
+ node.print(writer, STR("\t"), flags, encoding);
return writer.as_wide();
}