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 :

Remplir fichier .xml en boucle en c#


Sujet :

C#

  1. #1
    Futur Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Décembre 2016
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2016
    Messages : 7
    Points : 6
    Points
    6
    Par défaut Remplir fichier .xml en boucle en c#
    Bonjour à tous !

    Voilà, je bloque sur un code que j'essaye de faire. Je dois récupérer le chemin de tous les fichiers d'un dossier qui a un chemin spécifique (Par exemple récupérer tous les fichiers de c:\bureau, même ceux qui sont contenus dans des dossiers). Cette partie ne me pose pas de problème, mais je ne suis pas sûre de le faire de la meilleure façon vu que je galère pour la suite. La galère ==> J'essaye de remplir mon fichier .xml en boucle en même temps de ma récupération des fichiers. Sauf que je me mange des exceptions ou un fichier .xml vide.

    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
    static void Main(string[] args)
            {
                XmlTextWriter writer = new XmlTextWriter("test.xml", null); //cette ligne créée le fichier .xml
     
                string[] allFiles = Directory.GetFiles(@"C:\mochemin", "*.*", SearchOption.AllDirectories);
                foreach (string file in allFiles)
                {
                    XmlSerializer xmlSerializer = new XmlSerializer(file.GetType());
                    xmlSerializer.Serialize(writer, file);  //ici ca pète quand on fait ça en boucle
                    Console.ReadLine();
                    using (StringWriter textWriter = new StringWriter())
                    {
                        xmlSerializer.Serialize(textWriter, file);
                    }
                }
                Console.ReadLine();
            }
    Voilà ce que j'ai réussi à faire et là où je bloque du coup.
    Si quelqu'un avait des indices à me donner ainsi que de l'aide, je suis preneuse !

    Merci à tous
    Chloé

  2. #2
    Expert éminent sénior

    Avatar de François DORIN
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juillet 2016
    Messages
    2 757
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2016
    Messages : 2 757
    Points : 10 697
    Points
    10 697
    Billets dans le blog
    21
    Par défaut
    Bonjour,

    Effectivement, la méthode n'est pas bonne.

    L'utilisation de XmlSerializer n'est pas fait pour construire petit à petit un fichier XML, mais pour convertir un objet entier en document XML. Ici, tu essaies donc d'ajouter à la suite des documents XML au sein du même fichier. Du coup, ça coince car le fichier résultant ne sera pas valide...

    Tu peux aller jeter un oeil sur le cours de Thomas Levesque pour plus d'information sur la sérialisation utilisant XmlSerializer.

    L'approche ici consiste plutôt à construire ton document XML à la volée. On peut le faire avec XmlDocument et XmlElement, mais c'est maintenant un peu désué. Il est plutôt recommandé d'utiliser la nouvelle interface XElement :

    Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    static void Main(string[] args)
    {
       XElement xRoot = new XElement("Racine");
     
       string[] allFiles = Directory.GetFiles(@"C:\mochemin", "*.*", SearchOption.AllDirectories);
       foreach (string file in allFiles)
       {
          xRoot.Add(new XElement("File", file));
       }
       File.WriteAllText(xRoot.ToString());
       Console.ReadLine();
    }
    François DORIN
    Consultant informatique : conception, modélisation, développement (C#/.Net et SQL Server)
    Site internet | Profils Viadéo & LinkedIn
    ---------
    Page de cours : fdorin.developpez.com
    ---------
    N'oubliez pas de consulter la FAQ C# ainsi que les cours et tutoriels

  3. #3
    Futur Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Décembre 2016
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2016
    Messages : 7
    Points : 6
    Points
    6
    Par défaut
    Hey!

    Merci de ta réponse. Merci pour le cours, je vais aller y jeter un coup d'oeil parce que ça veut dire que je n'avais pas bien (pas du tout bien même) compris.
    Le code est assez clair et explicite. Il n'y a qu'une ligne qui me pose problème et que je n'ai pas très bien compris, enfin du moins je n'ai pas compris ce q'uil fallait mettre comme argument. JE suis allée me renseigner un peu (peut-être mal du coup), mais je reste toujours dans l'incompréhension.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    File.WriteAllText(xRoot.ToString());
    Je ne peux pas compiler car le WriteAllText prend deux chaines de caractères. J'ai essayé de faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    File.WriteAllText(xRoot.ToString(), null);
    Mais que nenni! Cela ne fonctionne pas du tout.

    Pourrais-tu m'éclairer un peu plus sur cette ligne, ainsi que me donner des conseils concernant le second argument?
    Merci beaucoup.

    Chloé.

  4. #4
    Expert éminent sénior

    Avatar de François DORIN
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juillet 2016
    Messages
    2 757
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2016
    Messages : 2 757
    Points : 10 697
    Points
    10 697
    Billets dans le blog
    21
    Par défaut
    Alors, le xRoot.ToString() sert simplement à transformer un élément XML en chaîne de caractères (ici, pour pouvoir le mettre dans un fichier).

    Le File.WriteAllText ne fonctionne pas ici, car j'ai un peu oublié de préciser le fichier dans lequel je veux écrire...

    Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
    File.WriteAllText("test.xml", xRoot.ToString());
    François DORIN
    Consultant informatique : conception, modélisation, développement (C#/.Net et SQL Server)
    Site internet | Profils Viadéo & LinkedIn
    ---------
    Page de cours : fdorin.developpez.com
    ---------
    N'oubliez pas de consulter la FAQ C# ainsi que les cours et tutoriels

  5. #5
    Futur Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Décembre 2016
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2016
    Messages : 7
    Points : 6
    Points
    6
    Par défaut
    Ok, merci beaucoup des explications claires, ça marche bien et j'ai bien compris du coup

    Chloé

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 10
    Dernier message: 15/10/2020, 10h15
  2. remplir fichier XML via code Java
    Par sillimi18 dans le forum Format d'échange (XML, JSON...)
    Réponses: 1
    Dernier message: 13/05/2013, 09h46
  3. Remplir un tabeau préformaté HTML avec un fichier XML
    Par oxilab dans le forum XML/XSL et SOAP
    Réponses: 8
    Dernier message: 14/02/2008, 15h11
  4. [C#] Remplire un comboBox avec un fichier XML
    Par Roach dans le forum Windows Forms
    Réponses: 3
    Dernier message: 03/09/2005, 20h45
  5. Réponses: 10
    Dernier message: 05/04/2005, 10h25

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