Exemplo n.º 1
0
        public static void WriteTag(XmlWriter xmlDoc, IExportTag tag, Person p, object filterObj, string parentArbreLevelStr, int levelChild)
        {
            Console.WriteLine($"RACINE: {tag.Name}");
            //on écrit la racine
            xmlDoc.WriteStartElement(tag.Name);

            //s'il y a des enfants, il faut les écrire
            if (tag.Childs.Count > 0)
            {
                foreach (var subtag in tag.Childs)
                {
                    WriteTag(xmlDoc, subtag, p, filterObj, parentArbreLevelStr, levelChild);
                }
            }
            // sinon, il faut écrire la valeur du tag courant !
            else
            {
                if (filterObj is Person)
                {
                    xmlDoc.WriteString(tag.GetValue(p, parentArbreLevelStr, levelChild));
                }
                else if (filterObj is Relationship)
                {
                }
            }

            // dans tous les cas, on ferme!
            xmlDoc.WriteEndElement();
            Console.WriteLine($"RACINE END: {tag.Name}");
        }
Exemplo n.º 2
0
        private static void WriteXmlNaissances(XmlWriter xmlDoc, IExportTag rootTag, Person rootPers, string parentArbreLevelStr, int levelChild, int dateDepart, Func <Person, int, List <object> > filter)
        {
            string currentArbreLevelStr = parentArbreLevelStr;
            int    currentArbreLevel    = levelChild;

            if (levelChild > 0)
            {
                if (string.IsNullOrEmpty(currentArbreLevelStr))
                {
                    currentArbreLevelStr += currentArbreLevel;
                }
                else
                {
                    currentArbreLevelStr += "." + currentArbreLevel;
                }
            }

            var filterObj = filter(rootPers, dateDepart);

            foreach (var item in filterObj)
            {
                WriteTag(xmlDoc, rootTag, rootPers, item, currentArbreLevelStr, levelChild);
            }

            //int yearOfBirth;
            //if (int.TryParse(rootPers.YearOfBirth, out yearOfBirth))
            //{
            //    if (yearOfBirth >= dateDepart)
            //    {
            //        WriteTag(xmlDoc, rootTag, rootPers, currentArbreLevelStr, levelChild);
            //    }
            //}

            // on ajoute les enfants
            int numberOfChild = 1;

            foreach (Person child in rootPers.Children.OrderBy(X => X.BirthDate))
            {
                WriteXmlNaissances(xmlDoc, rootTag, child, currentArbreLevelStr, numberOfChild++, dateDepart, filter);
            }
        }