/*! @file

    @id $Id$
*/
//       1         2         3         4         5         6         7         8
// 45678901234567890123456789012345678901234567890123456789012345678901234567890

#include <xml-cxx/xml.hxx>
#include <iostream>
#include <sstream>

class A: public xml::Serialize {
  public:
    xml::Optional<int> a;
    xml::Optional<std::string> txt;
  protected:
    void initXmlMembers() {
      className("A");
      persist(a, "a");
      persist(txt, "txt");
    }
};

class B: public xml::Serialize {
  public:
    xml::Optional<A> a;
    xml::Optional<int> i;
    xml::Optional<std::string> txt;
  protected:
    void initXmlMembers() {
      className("B");
      persist(a, "a");
      persist(i, "i");
      persist(txt, "txt");
    }
};

int main(int, char**) {
  { // Serialization as a member
    std::stringstream ss("<B><a><txt>Only this text is given</txt></a></B>");
    B b;
    b.loadXml(ss);
    b.saveXml(std::cout)<<std::endl;
  }
  return 0;
}
