Basic Image AlgorithmS Library  2.8.0
 All Classes Namespaces Functions Variables Typedefs Enumerations Enumerator Friends Groups Pages
ExampleXMLBase.cpp

Example XMLBase operations

,XMLBase

Author
MIP
/*
This file is part of the BIAS library (Basic ImageAlgorithmS).
Copyright (C) 2003-2009 (see file CONTACT for details)
Multimediale Systeme der Informationsverarbeitung
Institut fuer Informatik
Christian-Albrechts-Universitaet Kiel
BIAS is free software; you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as published by
the Free Software Foundation; either version 2.1 of the License, or
(at your option) any later version.
BIAS is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public License
along with BIAS; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
/**
@example ExampleXMLBase.cpp
@relates XMLIO,XMLBase
@brief Example XMLBase operations
@ingroup g_examples
@author MIP
*/
#include <Base/Common/XMLIO.hh>
#include <Base/Debug/Debug.hh>
#include <Base/Common/XMLBase.hh>
using namespace BIAS;
using namespace std;
// ############### this is the test class with xml support ###############
#define VERSIONOFTESTCLASS 0.37
/** \cond POORLY_NAMED_EXAMPLE_CLASSES **/
/* some base */
class myTestClass: public XMLBase, Debug {
public:
virtual int XMLGetClassName(string& TopLevelTag, double& Version) const;
virtual int XMLOut(const xmlNodePtr Node, XMLIO& XMLObject) const;
virtual int XMLIn(const xmlNodePtr Node, XMLIO& XMLObject);
virtual ~myTestClass();
int thedata;
};
// ################## implementation (virtual functions) ##################
myTestClass::~myTestClass() {}
int myTestClass::XMLGetClassName(std::string& TopLevelTag,
double &Version) const {
TopLevelTag = "myTestClass";
Version = VERSIONOFTESTCLASS;
return 0;
}
int myTestClass::XMLOut(const xmlNodePtr Node, XMLIO& XMLObject) const {
XMLObject.addAttribute(Node, "theData", thedata);
return 0;
}
int myTestClass::XMLIn(const xmlNodePtr Node, XMLIO& XMLObject) {
thedata = XMLObject.getAttributeValueInt(Node, "theData");
return 0;
}
/** \endcond */
// ########################## a small example program #######################
int main (int /*argc*/, char ** /*argv*/)
{
// output
myTestClass x, y, z;
x.thedata = 42;
x.XMLWrite("backupofx.xml");
string str;
x.XMLWriteToString(str);
cout << "xml in string:\n" << str << endl;
// input
y.XMLRead("backupofx.xml");
z.XMLReadFromString(str);
// check result
int result(0);
if (x.thedata == y.thedata && x.thedata == z.thedata)
result=0;
else
result=-1;
cout
<<"x.thedata="<<x.thedata<<endl
<<"y.thedata="<<y.thedata <<endl
<<"z.thedata="<<z.thedata <<endl
<<"result="<<result<<endl;
return result;
}