Index: /XMLIO_V2/dev/dev_rv/src/xmlio/data_output.cpp
===================================================================
--- /XMLIO_V2/dev/dev_rv/src/xmlio/data_output.cpp	(revision 271)
+++ /XMLIO_V2/dev/dev_rv/src/xmlio/data_output.cpp	(revision 272)
@@ -2,4 +2,5 @@
 
 #include "attribute_template_impl.hpp"
+#include "group_template_impl.hpp"
 #include "context.hpp"
 
Index: /XMLIO_V2/dev/dev_rv/src/xmlio/declare_group.hpp
===================================================================
--- /XMLIO_V2/dev/dev_rv/src/xmlio/declare_group.hpp	(revision 271)
+++ /XMLIO_V2/dev/dev_rv/src/xmlio/declare_group.hpp	(revision 272)
@@ -27,4 +27,32 @@
    };                                                                 \
    typedef type##Group type##Definition
+   
+#define DECLARE_GROUP_PARSE_REDEF(type)                                  \
+   class type##Group                                                     \
+      : public CGroupTemplate<type, type##Group, type##Attributes>       \
+   {                                                                     \
+      public:                                                            \
+         typedef type              RelChild;                             \
+         typedef type##Group       RelGroup;                             \
+         typedef type##Attributes  RelAttributes;                        \
+         typedef CGroupTemplate<type, type##Group, type##Attributes>     \
+                 SuperClass;                                             \
+                                                                         \
+         type##Group(void)                                               \
+            : CGroupTemplate<RelChild, RelGroup, RelAttributes> ()       \
+         { /* Ne rien faire de plus */ }                                 \
+         type##Group(const StdString& _id)                               \
+            : CGroupTemplate<RelChild, RelGroup, RelAttributes> (_id)    \
+         { /* Ne rien faire de plus */ }                                 \
+                                                                         \
+         static ENodeType GetType(void)                                  \
+         { return static_cast<ENodeType>(RelChild::GetType()+1); }       \
+                                                                         \
+         virtual void parse(xml::CXMLNode & node, bool withAttr = true); \
+                                                                         \
+         virtual ~type##Group(void)                                      \
+         { /* Ne rien faire de plus */ }                                 \
+   };                                                                    \
+   typedef type##Group type##Definition
 
 #endif // __XMLIO_DECLARE_GROUP__
Index: /XMLIO_V2/dev/dev_rv/src/xmlio/fortran/icaxis.cpp
===================================================================
--- /XMLIO_V2/dev/dev_rv/src/xmlio/fortran/icaxis.cpp	(revision 271)
+++ /XMLIO_V2/dev/dev_rv/src/xmlio/fortran/icaxis.cpp	(revision 272)
@@ -8,7 +8,7 @@
 #include "xmlioserver.hpp"
 
-#include "attribute_template_impl.hpp"
 #include "object_template_impl.hpp"
 #include "group_template_impl.hpp"
+#include "attribute_template_impl.hpp"
 
 #include "icutil.hpp"
Index: /XMLIO_V2/dev/dev_rv/src/xmlio/group_template.hpp
===================================================================
--- /XMLIO_V2/dev/dev_rv/src/xmlio/group_template.hpp	(revision 271)
+++ /XMLIO_V2/dev/dev_rv/src/xmlio/group_template.hpp	(revision 272)
@@ -43,5 +43,5 @@
 
          virtual void parse(xml::CXMLNode & node);
-         inline void parse(xml::CXMLNode & node, bool withAttr);
+         virtual void parse(xml::CXMLNode & node, bool withAttr);
          
          /// Test ///
Index: /XMLIO_V2/dev/dev_rv/src/xmlio/node/variable.cpp
===================================================================
--- /XMLIO_V2/dev/dev_rv/src/xmlio/node/variable.cpp	(revision 271)
+++ /XMLIO_V2/dev/dev_rv/src/xmlio/node/variable.cpp	(revision 272)
@@ -16,4 +16,5 @@
       : CObjectTemplate<CVariable>()
       , CVariableAttributes()
+      , content()
    { /* Ne rien faire de plus */ }
 
@@ -21,4 +22,5 @@
       : CObjectTemplate<CVariable>(id)
       , CVariableAttributes()
+      , content()
    { /* Ne rien faire de plus */ }
 
@@ -30,4 +32,67 @@
    ENodeType CVariable::GetType(void)   { return (eVariable); }
 
+   void CVariable::parse(xml::CXMLNode & node)
+   {
+      SuperClass::parse(node);
+      StdString id = (this->hasId()) ? this->getId() : StdString("undefined");
+      if (!node.getContent(this->content))
+      {
+         ERROR("CVariable::parse(xml::CXMLNode & node)",
+               << "[ variable id = " << id
+               << " ] variable is not defined !");
+      }
+   }
+
+   const StdString & CVariable::getContent (void) const
+   {
+      return (this->content);
+   }
+
+   StdString CVariable::toString(void) const
+   {
+      StdOStringStream oss;
+
+      oss << "<" << CVariable::GetName() << " ";
+      if (this->hasId())
+         oss << " id=\"" << this->getId() << "\" ";
+      oss << SuperClassAttribute::toString() << ">" << std::endl
+          << this->content /*<< std::endl*/;
+      oss << "</" << CVariable::GetName() << " >";
+      return (oss.str());
+   }
+
+   void CVariableGroup::parse(xml::CXMLNode & node, bool withAttr)
+   {
+      boost::shared_ptr<CVariableGroup> group_ptr = (this->hasId())
+         ? CObjectFactory::GetObject<CVariableGroup>(this->getId())
+         : CObjectFactory::GetObject(this);
+
+      StdString content;
+      if (this->getId().compare(CVariableGroup::GetDefName()) != 0 && node.getContent(content))
+      {
+        StdSize beginid = 0, endid = 0, begindata = 0, enddata = 0;
+        StdString subdata, subid;
+
+        while ((beginid = content.find_first_not_of ( " \r\n\t;", enddata)) != StdString::npos)
+        {
+           endid   = content.find_first_of ( " \r\n\t=", beginid );
+           subid   = content.substr ( beginid, endid-beginid);
+
+           begindata = content.find_first_of ( "=", endid ) + 1;
+           enddata   = content.find_first_of ( ";", begindata );
+           subdata   = content.substr ( begindata, enddata-begindata);
+
+           //std::cout << "\"" << subid << "\":\"" << subdata << "\"" << std::endl;
+           CGroupFactory::CreateChild(group_ptr, subid)->content = subdata;
+        }
+      }
+      else
+      {
+         SuperClass::parse(node, withAttr);
+      }
+      //SuperClass::parse(node, withAttr);
+
+   }
+
 } // namespace tree
 } // namespace xmlioserver
Index: /XMLIO_V2/dev/dev_rv/src/xmlio/node/variable.hpp
===================================================================
--- /XMLIO_V2/dev/dev_rv/src/xmlio/node/variable.hpp	(revision 271)
+++ /XMLIO_V2/dev/dev_rv/src/xmlio/node/variable.hpp	(revision 272)
@@ -35,4 +35,6 @@
             typedef CVariableAttributes SuperClassAttribute;
 
+            friend class CVariableGroup;
+
          public :
 
@@ -49,8 +51,31 @@
             virtual ~CVariable(void);
 
+         public :
+         
+            /// Autres ///
+            virtual void parse(xml::CXMLNode & node);
+            virtual StdString toString(void) const;
+
+            //virtual void toBinary  (StdOStream & os) const;
+            //virtual void fromBinary(StdIStream & is);
+
+            /// Accesseur ///
+            const StdString & getContent (void) const;
+
+            
+            template <typename T> inline void getData(T & _data) const;
+            template <typename T, StdSize N>
+               inline void getData(ARRAY(T, N) _data_array) const;
+
+         public :
+         
             /// Accesseurs statiques ///
             static StdString GetName(void);
             static StdString GetDefName(void);
             static ENodeType GetType(void);
+
+         private :
+
+            StdString content;
 
       }; // class CVar
@@ -59,5 +84,5 @@
 
       // Declare/Define CVarGroup and CVarDefinition
-      DECLARE_GROUP(CVariable);
+      DECLARE_GROUP_PARSE_REDEF(CVariable);
 
 
Index: /XMLIO_V2/dev/dev_rv/src/xmlio/output/nc4_data_output.cpp
===================================================================
--- /XMLIO_V2/dev/dev_rv/src/xmlio/output/nc4_data_output.cpp	(revision 271)
+++ /XMLIO_V2/dev/dev_rv/src/xmlio/output/nc4_data_output.cpp	(revision 272)
@@ -4,4 +4,5 @@
 #include <boost/lexical_cast.hpp>
 #include "attribute_template_impl.hpp"
+#include "group_template_impl.hpp"
 
 #include "file.hpp"
Index: /XMLIO_V2/dev/dev_rv/src/xmlio/output/onetcdf4.cpp
===================================================================
--- /XMLIO_V2/dev/dev_rv/src/xmlio/output/onetcdf4.cpp	(revision 271)
+++ /XMLIO_V2/dev/dev_rv/src/xmlio/output/onetcdf4.cpp	(revision 272)
@@ -1,3 +1,4 @@
 #include "onetcdf4.hpp"
+#include "group_template_impl.hpp"
 
 namespace xmlioserver
Index: /XMLIO_V2/dev/dev_rv/src/xmlio/server.cpp
===================================================================
--- /XMLIO_V2/dev/dev_rv/src/xmlio/server.cpp	(revision 271)
+++ /XMLIO_V2/dev/dev_rv/src/xmlio/server.cpp	(revision 272)
@@ -4,4 +4,5 @@
 #include "duration.hpp"
 #include "data_treatment.hpp"
+#include "group_template_impl.hpp"
 
 namespace xmlioserver {
Index: /XMLIO_V2/dev/dev_rv/src/xmlio/xml_node.cpp
===================================================================
--- /XMLIO_V2/dev/dev_rv/src/xmlio/xml_node.cpp	(revision 271)
+++ /XMLIO_V2/dev/dev_rv/src/xmlio/xml_node.cpp	(revision 272)
@@ -65,4 +65,11 @@
       }
 
+      bool CXMLNode::getContent(StdString & content)
+      {
+         if (this->node->value_size() == 0) return (false);
+         content.assign(this->node->value(), this->node->value_size());
+         return (true);
+      }
+
       const StdString & CXMLNode::GetRootName(void)
       { 
Index: /XMLIO_V2/dev/dev_rv/src/xmlio/xml_node.hpp
===================================================================
--- /XMLIO_V2/dev/dev_rv/src/xmlio/xml_node.hpp	(revision 271)
+++ /XMLIO_V2/dev/dev_rv/src/xmlio/xml_node.hpp	(revision 272)
@@ -33,4 +33,5 @@
             bool goToChildElement(void);
             bool goToParentElement(void);
+            bool getContent(StdString & content);
 
             /// Accesseurs statiques ///
