diff options
-rw-r--r-- | tests/parser/driver.cxx | 12 | ||||
-rw-r--r-- | xml/value-traits | 16 |
2 files changed, 28 insertions, 0 deletions
diff --git a/tests/parser/driver.cxx b/tests/parser/driver.cxx index 4e0fbae..c1c6f3d 100644 --- a/tests/parser/driver.cxx +++ b/tests/parser/driver.cxx @@ -470,4 +470,16 @@ main () assert (v[3] == parser::end_element); assert (v[4] == parser::end_element); } + + // Test space extraction into the std::string value. + // + { + istringstream is ("<root a=' a '> b </root>"); + parser p (is, "test"); + p.next_expect (parser::start_element, "root"); + assert (p.attribute<std::string> ("a") == " a "); + p.next_expect (parser::characters); + assert (p.value<std::string> () == " b "); + p.next_expect (parser::end_element); + } } diff --git a/xml/value-traits b/xml/value-traits index 3bf10e0..0c79229 100644 --- a/xml/value-traits +++ b/xml/value-traits @@ -39,6 +39,22 @@ namespace xml } }; + template <> + struct LIBSTUDXML_EXPORT default_value_traits<std::string> + { + static std::string + parse (std::string s, const parser&) + { + return s; + } + + static std::string + serialize (const std::string& v, const serializer&) + { + return v; + } + }; + template <typename T> struct value_traits: default_value_traits<T> {}; |