From be6559e090455206c66d1cb7e65a2e4f34a61861 Mon Sep 17 00:00:00 2001 From: Boris Kolpackov Date: Wed, 14 May 2014 11:34:05 -0700 Subject: Add 'hybrid' example --- examples/hybrid/driver.cxx | 51 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 51 insertions(+) create mode 100644 examples/hybrid/driver.cxx (limited to 'examples/hybrid/driver.cxx') diff --git a/examples/hybrid/driver.cxx b/examples/hybrid/driver.cxx new file mode 100644 index 0000000..ca7421a --- /dev/null +++ b/examples/hybrid/driver.cxx @@ -0,0 +1,51 @@ +// file : examples/hybrid/driver.cxx +// copyright : not copyrighted - public domain + +#include +#include + +#include +#include + +#include "dom.hxx" + +using namespace std; +using namespace xml; + +int +main (int argc, char* argv[]) +{ + if (argc != 2) + { + cerr << "usage: " << argv[0] << " " << endl; + return 1; + } + + try + { + // Parse the input document and construct an in-memory, DOM-like + // raw XML representation for each object element. Also serialize + // the data back to XML as we parse. + // + ifstream ifs (argv[1]); + parser p (ifs, argv[1]); + serializer s (cout, "output"); + + p.next_expect (parser::start_element, "objects", content::complex); + s.start_element ("objects"); + + while (p.peek () == parser::start_element) + { + element e (p); + e.serialize (s); + } + + p.next_expect (parser::end_element); // objects + s.end_element (); + } + catch (const xml::exception& e) + { + cerr << e.what () << endl; + return 1; + } +} -- cgit v1.1