A .xml file contains the serialization of an object data structure generated with the XMLSerializer:
The top level elements represent the groups in which the object are organised. The object names are unique within these groups.
<group1>
<object1 val="value of object 1"/>
<object2 val="value of object 2"/>
</group1>
<group2>
<object1 val="value of object 1"/>
</group2>
An object can be of following type:
Basic types: char, char*, std::string, bool, usigned int, int, float, double
STL containers: std::array, std::vector, std::pair
Eigen types: Eigen::Matrix, Eigen::SparseMatrix
User defined types: XMLSerializable*.
There can also be a hierachical structure like vector<int>, this will result in the following serialization:
<group>
<vector size="3">
<value0 val="1"/>
<value1 val="2"/>
<value2 val="3"/>
</vector>
</group>
An example of a serialization of an instance of the class Test
class Test{
int var1;
vector<float> vec1;
};
is shown here:
<group>
<Test>
<var1 val="0">
<vec1 size="2">
<value0 val="1"/>
<value1 val="2"/>
</vector>
</Test>
</group>
In the following we show the serialization of Eigen matrices.
Eigen::Matrix<int,4,3>:
<group>
<matrix row="4" col="3" matrix="
1,2,3,
4,5,6,
7,8,9,
10,11,12/>
</group>
Eigen::SparseMatrix<int> (3x3 identity saved as triplets of the non-zero entries):
<group>
<matrix row="3" col="3" matrix="
0,0,1,
1,1,1,
2,2,1/>
</group>
See also: file formats