IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C# Discussion :

Création XML via C#


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Femme Profil pro
    Développeur Web
    Inscrit en
    Mars 2009
    Messages
    43
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Mars 2009
    Messages : 43
    Par défaut Création XML via C#
    Bonjour à tous,
    J'ai un petit problème qui, je pense, ne vous posera pas trop de problèmes, mais malheureusement je bloque moi !
    En fait je veux avoir ce genre de XML à la fin en gros (je l'ai allégé) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    <root>
      <section id="Test" description="Portail">
        <log description="D051DE6.jpg">Error : Unable to run - 22/06/2009 15:24:40</log>
        <log description="E4051E3B.jpg">Error : Exception - 22/06/2009 15:26:21</log>
      </section>
      <section id="Test" description="Portail">
        <log description="D70513F2.jpg">Error : EXI-GESDOS-0008_Connexion - 29/05/2009 15:55:13</log>
      </section>
      <section id="Test" description="Portail">
        <log description="Pas de screenshots dans ce log">Pas d'erreurs dans ce log</log>
      </section>
    </root>
    Donc chaque section contiennent plusieurs "log" avec un screenshot en description.

    Mon code est celui-ci, mais le problème, c'est les 2 for-each donc il place deux fois les mêmes screenshot (.jpg) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
     
    while (EName.MoveNext() && EErrors.MoveNext() && EScreen.MoveNext())
    {
        Xtw.WriteStartElement("section");
        Xtw.WriteAttributeString("id", "Test");
        Xtw.WriteAttributeString("description", EName.Current.ToString());
        Xtw.WriteAttributeString("presentation_level", "1");
        Xtw.WriteAttributeString("error_level", "2");
     
        EachErrors = EErrors.Current.ToString().Split('\n');
        EachScreen = EScreen.Current.ToString().Split('\n');
        foreach (String Err in EachErrors)
            foreach (String Scr in EachScreen)
            {
                  Xtw.WriteStartElement("log");
                  Xtw.WriteAttributeString("error_level", "0");
                  Xtw.WriteAttributeString("description", Scr);
                  Xtw.WriteString(Err);
                  Xtw.WriteEndElement();
            }
     
        Xtw.WriteEndElement();
    }
    Y a-t-il une solution pour remplacer les deux foreach ? (Dites moi si ce n'est pas assez clair)

    Merci beaucoup d'avance !

  2. #2
    Membre chevronné
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    388
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 388
    Par défaut
    Lu,
    Qu'est-ce que EErrors et EScreen?
    Peux tu nous montrer ce que donne ton fichier XML pour l'instant?

  3. #3
    Membre averti
    Femme Profil pro
    Développeur Web
    Inscrit en
    Mars 2009
    Messages
    43
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Mars 2009
    Messages : 43
    Par défaut
    Ah oui, désolé, je voulais mettre le moins possible pour pas vous donner trop à lire.

    Fichier XML que j'ai pour l'instant (en rouge ce qui est en trop) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    <root>
      <section id="Test" description="Portail">
        <log description="D051DE6.jpg">Error : Unable to run - 22/06/2009 15:24:40</log>
        <log description="E4051E3B.jpg">Error : Unable to run - 22/06/2009 15:24:40</log>
        <log description="D051DE6.jpg">Error : Exception - 22/06/2009 15:26:21</log>
        <log description="E4051E3B.jpg">Error : Exception - 22/06/2009 15:26:21</log>
      </section>
      <section id="Test" description="Portail">
        <log description="D70513F2.jpg">Error : EXI-GESDOS-0008_Connexion - 29/05/2009 15:55:13</log>
      </section>
      <section id="Test" description="Portail">
        <log description="Pas de screenshots dans ce log">Pas d'erreurs dans ce log</log>
      </section>
    </root>
    Je vous met ce qui est important au niveau du code C# concernant la création du XML :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
     
    ....
                    // Création du nouveau fichier XML avec la date et l'heure courante
                    Xtw = new XmlTextWriter(DateNow + "__RetourErreurLogs.xml", System.Text.Encoding.UTF8);
                    Xtw.Formatting = Formatting.Indented;
     
                    // Structure du document XML contenant les erreurs des différents logs
                    Xtw.WriteStartDocument();
                    Xtw.WriteStartElement("root");
                    Xtw.WriteAttributeString("description", "Compte rendu des erreurs de logs TestComplete - DEV");
                    Xtw.WriteAttributeString("error_level", "0");
                    Xtw.WriteAttributeString("libelleLog", "Log");
                    Xtw.WriteAttributeString("libelleDescription", "Description");
     
                    EName = TestName.GetEnumerator();
                    EErrors = Errors.GetEnumerator();
                    EScreen = Screenshots.GetEnumerator();
     
                    while (EName.MoveNext() && EErrors.MoveNext() && EScreen.MoveNext())
                    {
                        Xtw.WriteStartElement("section");
                        Xtw.WriteAttributeString("id", EName.Current.ToString());
                        Xtw.WriteAttributeString("description", EName.Current.ToString());
                        Xtw.WriteAttributeString("presentation_level", "1");
                        if (EErrors.Current.ToString().Contains("Error"))
                            Xtw.WriteAttributeString("error_level", "2");
                        else
                            Xtw.WriteAttributeString("error_level", "0");
     
                        EachErrors = EErrors.Current.ToString().Split('\n');
                        EachScreen = EScreen.Current.ToString().Split('\n');
                        foreach (String Err in EachErrors)
                            foreach (String Scr in EachScreen)
                            {
                                Xtw.WriteStartElement("log");
                                if (Err.Contains("Error"))
                                    Xtw.WriteAttributeString("error_level", "2");
                                else
                                    Xtw.WriteAttributeString("error_level", "0");
                                Xtw.WriteAttributeString("description", Scr);
                                Xtw.WriteString(Err);
                                Xtw.WriteEndElement();
                            }
     
                        Xtw.WriteEndElement();
                    }
     
                    Xtw.WriteEndElement();
                    Xtw.WriteEndDocument();
     
                    // Vide le contenu de la mémoire tampon
                    Xtw.Flush();
                    // Ferme le fichier XML
                    Xtw.Close();

Discussions similaires

  1. Création XML via WORD et utilisation
    Par PierG dans le forum VBA Word
    Réponses: 4
    Dernier message: 20/06/2013, 13h48
  2. Création d'un XMl via une application Vb.net
    Par machin1234 dans le forum Windows
    Réponses: 1
    Dernier message: 01/12/2010, 09h27
  3. Probleme création/validation xml via php
    Par shelko dans le forum Valider
    Réponses: 1
    Dernier message: 24/06/2008, 13h12
  4. xml - création xml via php(mysql) - manque données
    Par Raiders dans le forum XQUERY/SGBD
    Réponses: 5
    Dernier message: 23/03/2006, 18h54
  5. recherche dans un document xml via DOM
    Par ndoye_zaff dans le forum APIs
    Réponses: 5
    Dernier message: 11/06/2003, 14h44

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo