/*! @file @id $Id: inherit_serialization.cxx 25 2009-04-23 15:10:21Z $ */ // 1 2 3 4 5 6 7 8 // 45678901234567890123456789012345678901234567890123456789012345678901234567890 #include <xml-cxx/xml.hxx> #include <iostream> #include <sstream> class A: public xml::Serialize { public: int a; std::string txt; protected: void initXmlMembers() { className("a") .persist(a, "a") .persist(txt, "txt"); } }; class B: public xml::Serialize { public: int i; std::string txt; A a; protected: void initXmlMembers() { className("b") .persist(i, "i") .persist(txt, "txt") .persist(a, "a"); } }; int main(int, char**) { { // Serialization as a member std::stringstream ss("<b>\n" "\t<i>1234</i>\n" "\t<txt>Dies ist Class B</txt>\n" "\t<a>\n" "\t\t<a>5678</a>\n" "\t\t<txt>Dies ist Class A</txt>\n" "\t</a>" "</b>"); B b; b.loadXml(ss); if (b.i==1234) b.i=4321; if (b.a.a==5678) b.a.a=8765; std::cout<<"Text B: "<<b.txt<<std::endl; std::cout<<"Text A: "<<b.a.txt<<std::endl; b.saveXml(std::cout)<<std::endl; } return 0; }