/// <summary> /// Depuis une liste de IXmlTokens, ce méthode lit le document xml de haut en bàs. À chaque "match", il commence une nouvelle section /// </summary> /// <param name="Nodes">Liste des nœud xml</param> /// <param name="matchTokens">Liste des IXmlTokens qui vérifieront le texte ou le format</param> /// <param name="firstIdentifier">L'identifiant pour la première section</param> /// <param name="skipFirstNode">Parfois, le premièr nœud retourne un "match". Cette option evite ça</param> /// <returns>Liste des sections du fichier xml</returns> public List <CVSection> GetCVSections(List <XmlNode> Nodes, List <IXmlToken> matchTokens, string firstIdentifier, bool skipFirstNode = false) { string currentIdent = string.Empty; XmlNode First; List <CVSection> Sections = new List <CVSection>(); CVSection currentCVSection = new CVSection(); currentCVSection.Identifiant = firstIdentifier; if (skipFirstNode) { First = Nodes.First(); Nodes.Remove(First); currentCVSection.AddNode(First); } while (Nodes.Count > 0) { First = Nodes.First(); Nodes.Remove(First); if (matchTokens.Any(x => x.Match(First, out currentIdent))) { Sections.Add(currentCVSection); currentCVSection = new CVSection(); currentCVSection.Identifiant = currentIdent; currentCVSection.AddNode(First); currentIdent = string.Empty; } else { currentCVSection.AddNode(First); } } Sections.Add(currentCVSection); return(Sections); }