コード例 #1
0
        /// <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);
        }