/// <summary>
        /// Extrait du code xml d'une chaine de caractère, le code n'est plus présent dans la chaine
        /// après traitement
        /// </summary>
        /// <param name="xml"></param>
        /// <param name="tag"></param>
        /// <returns></returns>
        public static XElement ExtractXml(ref string xml, string tag)
        {
            XElement   _xml;
            XmlIndexes _tagIndexes;

            string _xmlString;

            if (xml == null || xml == string.Empty)
            {
                return(null);
            }

            if (tag == null || tag == string.Empty)
            {
                return(null);
            }

            // Récupère les indexs de la trame XML
            _tagIndexes = CRocrailXmlParser.GetTagIndexes(xml, tag);

            if (_tagIndexes == null)
            {
                return(null);
            }

            // Extraction du code XML de la chaine
            _xmlString = xml.Substring(_tagIndexes.StartTagIndex, _tagIndexes.Length);
            _xml       = XElement.Parse(_xmlString);

            xml = xml.Substring(_tagIndexes.EndTagIndex);

            return(_xml);
        }
        /// <summary>
        /// Extrait le header de la trame XML, le header n'est plus présent dans la chaine
        /// XML après traitement
        /// </summary>
        /// <param name="xml"></param>
        /// <returns></returns>
        public static CRocrailHeader ExtractHeader(ref string xml)
        {
            XElement       _xml;
            CRocrailHeader _header;

            // Récupère la balise xml du header
            // Header xml : <xmlh><xml size="90" /></xmlh>
            _xml = CRocrailXmlParser.ExtractXml(ref xml, "xmlh");

            if (_xml == null)
            {
                return(null);
            }

            // Traite le header
            _header = new CRocrailHeader(_xml);

            return(_header);
        }