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 :

Problème pour modifier mon fichier xml


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2011
    Messages
    273
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2011
    Messages : 273
    Par défaut Problème pour modifier mon fichier xml
    Bonsoir,

    J'ai un fichier xml nommé app.config dont le contenu est :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <?xml version="1.0" encoding="utf-8"?>
    <configuration>
      <appSettings>
        <add key="cleCommune" value="toto"/>
        <add key="cleSpecifique" value="titi"/>
      </appSettings>
    </configuration>
    J'ai besoin de récupérer des valeurs et d'en modifier.

    J'ai donc fait une recherche et j'ai trouvé : http://morpheus.developpez.com/trucs/classes/

    Le code fonctionne très bien pour l'affichage d'une valeur.
    Malheureusement pour la modification à l'aide de la fonction SetXmlValue rien est modifié dans le fichier.

    Voici un bout de code que j'utilise :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    MessageBox.Show(modifconf.GetXmlValue("cleSpecifique"));
     
    modifconf.SetXmlValue("cleSpecifique", "New clef");
     
    MessageBox.Show(modifconf.GetXmlValue("cleSpecifique"));
    La première messageBox m'affiche titi et la seconde m'affiche New clef mais le soucis c'est que rien est enregistré dans ce fichier app.config et je ne peut donc pas réutiliser la nouvelle valeur après un redémarrage de l'application.

    Avez vous une idée de l'origine de ce problème ?
    Merci d'avance de votre aide.

  2. #2
    Invité
    Invité(e)
    Par défaut
    Je n'ai pas regardé le code du lien que tu as fourni mais si ton objectif est de modifier ton fichier de configuration à l'exécution alors voici un bout de code qui le fait très facilement :
    Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    System.Configuration.Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
     
     
    config.AppSettings.Settings["cleSpecifique"].Value = "New clef";  
     
    config.Save(ConfigurationSaveMode.Modified);
     
     
    ConfigurationManager.RefreshSection(config.AppSettings.SectionInformation.Name);

  3. #3
    Membre éclairé
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2011
    Messages
    273
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2011
    Messages : 273
    Par défaut
    Citation Envoyé par h2s84 Voir le message
    Je n'ai pas regardé le code du lien que tu as fourni mais si ton objectif est de modifier ton fichier de configuration à l'exécution alors voici un bout de code qui le fait très facilement :
    Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    System.Configuration.Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
     
     
    config.AppSettings.Settings["cleSpecifique"].Value = "New clef";  
     
    config.Save(ConfigurationSaveMode.Modified);
     
     
    ConfigurationManager.RefreshSection(config.AppSettings.SectionInformation.Name);
    J'avais justement trouvé ce code sur des sites mais cela ne fonctionne pas.
    J'ai le fichier app.config qui se trouve dans le même répertoire que Form1.cs et tout le reste, le code permet de modifier la valeur de cleSpecifique et on constate un changement si on affiche la valeur avant et après le changement mais visuellement rien ne change dans app.config et si je redémarre l'application et que j'affiche la valeur de cleSpecifique je n'ai pas "New clef" mais la valeur qui est dans app.config depuis le départ et qui n'a pas bougé alors que pour pouvoir récupérer une valeur et l'enregistrer, il faudrait qu'elle soit modifier réellement dans app.config.



    Peu après avoir envoyé la demande d'aide j'ai pensé à un autre soucis, si j'utilise un fichier xml pour enregistrer des paramètres comme par exemple un emplacement personnalisé de dossiers utilisés par l'application, il faudra toujours copier/coller ce fichier afin qu'il soit toujours avec l’exécutable et au même endroit, ce qui est le contraire de ce que je veux faire, c'est à dire simplifier l'utilisation de l'application et qu'on ait pas besoin de modifier le code pour utiliser un autre répertoire.



    Il existe certainement d'autres solutions, comme par exemple le registre (on m'a dit que ça se comporte +/- comme un tableau de string) mais je n'ai jamais touché à ça et une erreur peut faire planter windows.
    Malgré tout, j'ai codé 3 applications qui décodent des codes barres et qr code, communiquent avec un base de données qui contient entre autre une liste d'élèves, afin de gérer des accès dans un lycée (un lycée imaginaire). Après tout cela je pense qu'utiliser le registre est un jeu d'enfant.

  4. #4
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par encoremoi21258 Voir le message
    J'avais justement trouvé ce code sur des sites mais cela ne fonctionne pas.
    J'ai le fichier app.config qui se trouve dans le même répertoire que Form1.cs et tout le reste, le code permet de modifier la valeur de cleSpecifique et on constate un changement si on affiche la valeur avant et après le changement mais visuellement rien ne change dans app.config et si je redémarre l'application et que j'affiche la valeur de cleSpecifique je n'ai pas "New clef" mais la valeur qui est dans app.config depuis le départ et qui n'a pas bougé alors que pour pouvoir récupérer une valeur et l'enregistrer, il faudrait qu'elle soit modifier réellement dans app.config.
    ça marche parfaitement. Le problème est que tu ne regardes pas le bon fichier ;-) Avant tout il ne faut jamais regarder le fichier app.config contenu dans ta solution. Après compilation de ton application en mode debug/release, VS crée un fichier .exe dans le dossier bin/(debug | release). Au niveau de ce même fichier tu trouveras 2 fichiers qui représentent la configuration qui sera modifiée :
    • <Nom de mon application>.vshost.exe.config
    • <Nom de mon application>.exe.config


    Ces 2 fichiers ne sont pas modifiés en même temps. Si tu utilises VS pour lancer/déboguer ton application alors il faut regarder le premier fichier celui contenant l'expression vshost. Si tu as lancé ton application en double-cliquant sur le fichier .exe alors c'est le deuxième fichier qu'il faut regarder et c'est dernier cas qui arrivera quand ton application sera livrée en production.

    Donc tu crois que le code ne marche pas parce que tu regardes au mauvais endroit à savoir dans la solution VS. En plus faire gaffe en lançant ton application avec VS, le contenu des 2 fichiers est toujours écrasé à chaque compilation donc du coup tu auras toujours la valeur initiale qui est celle contenue dans app.config de ta solution.

    Sinon il n'est pas vraiment recommandé de mettre des paramètres susceptibles d'être modifiés à chaud dans l'app.config. Il faudra toujours privilégier les fichiers .settings.

  5. #5
    Membre éclairé
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2011
    Messages
    273
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2011
    Messages : 273
    Par défaut
    Bonsoir

    Merci pour vos explications, je m'en sors mieux maintenant.

    Bonne soirée

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

Discussions similaires

  1. [JDOM] Problème pour créer mon fichier XML
    Par Leniouns dans le forum Format d'échange (XML, JSON...)
    Réponses: 2
    Dernier message: 10/07/2013, 16h39
  2. [JDOM] Problème pour parser un fichier XML [débutant]
    Par adn013 dans le forum Format d'échange (XML, JSON...)
    Réponses: 2
    Dernier message: 16/05/2007, 12h00
  3. Réponses: 7
    Dernier message: 23/07/2006, 20h01
  4. [C#] Problème pour lire un fichier xml
    Par LE NEINDRE dans le forum Windows Forms
    Réponses: 7
    Dernier message: 22/06/2006, 23h12
  5. problème pour parser un fichier xml avec XML::Simple
    Par black_code dans le forum Modules
    Réponses: 3
    Dernier message: 30/01/2006, 19h32

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