driver.cxx 1.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. // file : examples/hybrid/driver.cxx
  2. // copyright : not copyrighted - public domain
  3. #include <fstream>
  4. #include <iostream>
  5. #include <xml/parser>
  6. #include <xml/serializer>
  7. #include "dom.hxx"
  8. using namespace std;
  9. using namespace xml;
  10. int
  11. main (int argc, char* argv[])
  12. {
  13. if (argc != 2)
  14. {
  15. cerr << "usage: " << argv[0] << " <xml-file>" << endl;
  16. return 1;
  17. }
  18. try
  19. {
  20. // Parse the input document and construct an in-memory, DOM-like
  21. // raw XML representation for each object element. Also serialize
  22. // the data back to XML as we parse.
  23. //
  24. ifstream ifs (argv[1]);
  25. parser p (ifs, argv[1]);
  26. serializer s (cout, "output");
  27. p.next_expect (parser::start_element, "objects", content::complex);
  28. s.start_element ("objects");
  29. while (p.peek () == parser::start_element)
  30. {
  31. element e (p);
  32. e.serialize (s);
  33. }
  34. p.next_expect (parser::end_element); // objects
  35. s.end_element ();
  36. }
  37. catch (const xml::exception& e)
  38. {
  39. cerr << e.what () << endl;
  40. return 1;
  41. }
  42. }