![]() |
Visual Servoing Platform version 3.7.0
|
#include <vpXmlParser.h>
Public Member Functions | |
Public Member Functions Inherited from vpXmlParser | |
| vpXmlParser () | |
| vpXmlParser (const vpXmlParser &_twin) | |
| virtual | ~vpXmlParser () |
| void | parse (const std::string &filename) |
| void | save (const std::string &filename, bool append=false) |
| void | setMap (const std::map< std::string, int > &_map) |
| void | setMainTag (const std::string &tag) |
Static Public Member Functions | |
Static Public Member Functions Inherited from vpXmlParser | |
| static void | cleanup () |
Protected Member Functions Inherited from vpXmlParser | |
| std::map< std::string, int > | nodeMap |
| std::string | main_tag |
| virtual void | readMainClass (xmlDocPtr doc, xmlNodePtr node)=0 |
| virtual void | writeMainClass (xmlNodePtr node)=0 |
| bool | xmlReadBoolChild (xmlDocPtr doc, xmlNodePtr node) |
| char * | xmlReadCharChild (xmlDocPtr doc, xmlNodePtr node) |
| double | xmlReadDoubleChild (xmlDocPtr doc, xmlNodePtr node) |
| float | xmlReadFloatChild (xmlDocPtr doc, xmlNodePtr node) |
| int | xmlReadIntChild (xmlDocPtr doc, xmlNodePtr node) |
| std::string | xmlReadStringChild (xmlDocPtr doc, xmlNodePtr node) |
| unsigned int | xmlReadUnsignedIntChild (xmlDocPtr doc, xmlNodePtr node) |
| void | xmlWriteBoolChild (xmlNodePtr node, const char *label, bool value) |
| void | xmlWriteCharChild (xmlNodePtr node, const char *label, const char *value) |
| void | xmlWriteDoubleChild (xmlNodePtr node, const char *label, double value) |
| void | xmlWriteFloatChild (xmlNodePtr node, const char *label, float value) |
| void | xmlWriteIntChild (xmlNodePtr node, const char *label, int value) |
| void | xmlWriteStringChild (xmlNodePtr node, const char *label, const std::string &value) |
| void | xmlWriteUnsignedIntChild (xmlNodePtr node, const char *label, unsigned int value) |
This class intends to simplify the creation of xml parser based on the libxml2 third party library.
This class can be useful to manage external data parameters (for example for configuration of an experiment, ...).
In order to use this class, you have to create a new class inheriting from this one. In the child class, you have to implement the methods:
These two methods depends on the data to parse, and must not be directly called (they are called from the parse() and the save() methods).
Following is an example of implementation for the document:
A class to parse this document is declared as follows:
The readMainClass function implementation is:
Data can now be accessed through the internal variables of the class vpDataParser.
To store the data in a xml file, the function save has to be called. This function needs the implementation of the writeMainClass function.
For example,
Definition at line 184 of file vpXmlParser.h.
| BEGIN_VISP_NAMESPACE vpXmlParser::vpXmlParser | ( | ) |
Basic constructor.
Initialise the main tag with default value.
Definition at line 55 of file vpXmlParser.cpp.
References main_tag, and nodeMap.
Referenced by vpXmlParser().
| vpXmlParser::vpXmlParser | ( | const vpXmlParser & | _twin | ) |
Cpoy constructor.
| _twin | : The parser to copy. |
Definition at line 82 of file vpXmlParser.cpp.
References main_tag, nodeMap, and vpXmlParser().
|
virtual |
Basic destructor that does nothing.
Definition at line 72 of file vpXmlParser.cpp.
|
static |
As stated in http://xmlsoft.org/html/libxml-parser.html#xmlCleanupParser to clean up memory allocated by the xml2 library itself, the user should call xmlCleanupParser() only when the process has finished using the xml2 library. In case of doubt abstain from calling this function or do it just before calling exit() to avoid leak reports from valgrind ! That's why in ViSP the destructor doesn't call xmlCleanupParser(). Rather we provide the static function vpXmlParser::cleanup() that calls xmlCleanupParser() that could be called just before exit().
Definition at line 485 of file vpXmlParser.cpp.
| void vpXmlParser::parse | ( | const std::string & | filename | ) |
parse the document. The data in the file are stored in the attributes of the child class. This method calls the readMainClass method which has to be implemented for every child class depending on the content to parse.
| filename | : name of the file to parse |
Definition at line 418 of file vpXmlParser.cpp.
References vpException::ioError, readMainClass(), and vpERROR_TRACE.
Referenced by check-tests.JavaParser::parse().
|
protectedpure virtual |
pure virtual method used to read the document.
As the content of the function depends on the structure of the file to read, data name, data types and data values, it has to be reimplemented for every type of filename.
| doc | : a pointer representing the document |
| node | : the root node of the document |
Referenced by parse().
| void vpXmlParser::save | ( | const std::string & | filename, |
| bool | append = false ) |
Save the content of the class in the file given in parameters. The data of the class are in the child class. This method calls the write_main_class method which has to be implemented for every class depending on the data to save.
| filename | : the name of the file used to record the data |
| append | : if true and if the file exists, the data will be added to the data already in the file |
Definition at line 450 of file vpXmlParser.cpp.
References vpException::ioError, main_tag, vpERROR_TRACE, and writeMainClass().
Referenced by gen_java.JavaWrapperGenerator::finalize(), and gen_java.JavaWrapperGenerator::gen().
|
inline |
set the name of the main tag
The main tag corresponds to the name of the root node
| tag | : name of the root node of the document |
Definition at line 302 of file vpXmlParser.h.
References main_tag.
|
inline |
Set the map describing the data to parse. This map stores the name of each node and an associated key used to simplify the parsing of the file.
If the following file want to be parsed:
The following map has to be declared:
Or, you can use keyword instead of number as key but it implies to declare in the child class an enumeration type of the name. For example:
| _map | : the map describing the data to parse |
Definition at line 293 of file vpXmlParser.h.
References nodeMap.
|
protectedpure virtual |
pure virtual method used to write the document.
As the content of the function depends on the structure of the file to read, data name and data types, it has to be reimplemented for every type of file to parse.
| node | : the root node of the document |
References xmlReadBoolChild(), xmlReadCharChild(), xmlReadDoubleChild(), xmlReadFloatChild(), xmlReadIntChild(), xmlReadStringChild(), xmlReadUnsignedIntChild(), xmlWriteBoolChild(), xmlWriteCharChild(), xmlWriteDoubleChild(), xmlWriteFloatChild(), xmlWriteIntChild(), xmlWriteStringChild(), and xmlWriteUnsignedIntChild().
Referenced by save().
|
protected |
read a boolean
| doc | : The main xml document |
| node | : a pointer to the node to read value |
Definition at line 279 of file vpXmlParser.cpp.
References vpException::fatalError.
Referenced by writeMainClass().
|
protected |
Read an array of character.
| doc | : The main xml document |
| node | : a pointer to the node to read value |
Definition at line 97 of file vpXmlParser.cpp.
References vpException::fatalError.
Referenced by writeMainClass().
|
protected |
read a double
| doc | : The main xml document |
| node | : a pointer to the node to read value |
Definition at line 209 of file vpXmlParser.cpp.
References vpException::fatalError, and vpException::ioError.
Referenced by writeMainClass().
|
protected |
read a float
| doc | : The main xml document |
| node | : a pointer to the node to read value |
Definition at line 242 of file vpXmlParser.cpp.
References vpException::fatalError, and vpException::ioError.
Referenced by writeMainClass().
|
protected |
read an int
| doc | : The main xml document |
| node | : a pointer to the node to read value |
Definition at line 141 of file vpXmlParser.cpp.
References vpException::fatalError, and vpException::ioError.
Referenced by writeMainClass().
|
protected |
Read an array of character.
| doc | : The main xml document |
| node | : a pointer to the node to read value |
Definition at line 117 of file vpXmlParser.cpp.
References vpException::fatalError.
Referenced by writeMainClass().
|
protected |
read an int
| doc | : The main xml document |
| node | : a pointer to the node to read value |
Definition at line 175 of file vpXmlParser.cpp.
References vpException::fatalError, and vpException::ioError.
Referenced by writeMainClass().
|
protected |
write a bool.
| node | : a pointer to the node to read value |
| label | : label (name of the data) of the node |
| value | : boolean to write (true or false) |
Definition at line 395 of file vpXmlParser.cpp.
Referenced by writeMainClass().
|
protected |
write an array of character.
| node | : a pointer to the node to read value |
| label | : label (name of the data) of the node |
| value | : pointer to the array of character to write |
Definition at line 303 of file vpXmlParser.cpp.
Referenced by writeMainClass().
|
protected |
write a double.
| node | : a pointer to the node to read value |
| label | : label (name of the data) of the node |
| value | : double to write |
Definition at line 363 of file vpXmlParser.cpp.
Referenced by writeMainClass().
|
protected |
write a float.
| node | : a pointer to the node to read value |
| label | : label (name of the data) of the node |
| value | : float to write |
Definition at line 379 of file vpXmlParser.cpp.
Referenced by writeMainClass().
|
protected |
write an integer.
| node | : a pointer to the node to read value |
| label | : label (name of the data) of the node |
| value | : integer to write |
Definition at line 331 of file vpXmlParser.cpp.
Referenced by writeMainClass().
|
protected |
write an array of character.
| node | : a pointer to the node to read value |
| label | : label (name of the data) of the node |
| value | : std::string to write; |
Definition at line 317 of file vpXmlParser.cpp.
Referenced by writeMainClass().
|
protected |
write an unsigned integer.
| node | : a pointer to the node to read value |
| label | : label (name of the data) of the node |
| value | : unsigned integer to write |
Definition at line 347 of file vpXmlParser.cpp.
Referenced by writeMainClass().
|
protected |
The name of the main tag for the file to parse
Definition at line 238 of file vpXmlParser.h.
Referenced by save(), setMainTag(), vpXmlParser(), and vpXmlParser().
|
protected |
The map describing the data to parse
Definition at line 233 of file vpXmlParser.h.
Referenced by setMap(), vpXmlParser(), and vpXmlParser().