+namespace {
+ xmlDocPtr exportXMLDoc(Xao* xaoObject);
+ void exportGeometry(Geometry* xaoGeometry, xmlDocPtr doc, xmlNodePtr xao);
+ void exportGeometricElements(Geometry* xaoGeometry, xmlNodePtr topology,
+ XAO::Dimension dim, const xmlChar* colTag, const xmlChar* eltTag);
+ void exportGroups(Xao* xaoObject, xmlNodePtr xao);
+ void exportFields(Xao* xaoObject, xmlNodePtr xao);
+ void exportStep(Step* step, Field* field, xmlNodePtr nodeSteps);
+
+ void parseXMLDoc(xmlDocPtr doc, Xao* xaoObject);
+ void parseXaoNode(xmlDocPtr doc, xmlNodePtr xaoNode, Xao* xaoObject);
+ void parseGeometryNode(xmlDocPtr doc, xmlNodePtr geometryNode, Xao* xaoObject);
+ void parseShapeNode(xmlDocPtr doc, xmlNodePtr shapeNode, Geometry* geometry);
+ void parseTopologyNode(xmlNodePtr topologyNode, Geometry* geometry);
+ void parseVerticesNode(xmlNodePtr verticesNode, Geometry* geometry);
+ void parseEdgesNode(xmlNodePtr edgesNode, Geometry* geometry);
+ void parseFacesNode(xmlNodePtr facesNode, Geometry* geometry);
+ void parseSolidsNode(xmlNodePtr solidsNode, Geometry* geometry);
+ void parseGroupsNode(xmlNodePtr groupsNode, Xao* xaoObject);
+ void parseGroupNode(xmlNodePtr groupNode, Xao* xaoObject);
+
+ void parseFieldsNode(xmlNodePtr fieldsNode, Xao* xaoObject);
+ void parseFieldNode(xmlNodePtr fieldNode, Xao* xaoObject);
+ void parseStepNode(xmlNodePtr stepNode, Field* field);
+ void parseStepElementNode(xmlNodePtr eltNode, Step* step);
+
+ std::string readStringProp(xmlNodePtr node, const xmlChar* attribute,
+ const bool& required, const std::string& defaultValue, const std::string& exception = std::string(""));
+ int readIntegerProp(xmlNodePtr node, const xmlChar* attribute,
+ const bool& required, const int& defaultValue, const std::string& exception = std::string(""));
+
+ std::string readStringProp(xmlNodePtr node, const xmlChar* attribute,
+ const bool& required, const std::string& defaultValue,
+ const std::string& exception /*= std::string() */)
+ {