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 :

Impossible d'enregistrer un fichier xml


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé

    Profil pro
    Étudiant
    Inscrit en
    Novembre 2008
    Messages
    65
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2008
    Messages : 65
    Par défaut Impossible d'enregistrer un fichier xml
    Bonjour,

    J'ai un programme fait en WPF, qui utilise un fichier xml.

    Au départ, je charge le fichier ainsi :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    xmlTaches = XElement.Load(@"fichier.xml");
    Ensuite, je fais des opérations dessus ...

    puis à la fin, je le sauvegarde :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    xmlTaches.Save(@"fichier.xml");
    Là pas de problème pour compiler, par contre j'en ai un à l'execution, mon programme plante et le débugeur de Visual me dit "file access denied"...

    Quelqu'un saurait comment pouvoir malgré tout sauvegarder les changements ?

    Merci

  2. #2
    Membre chevronné
    Femme Profil pro
    Développeur .NET
    Inscrit en
    Avril 2009
    Messages
    339
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2009
    Messages : 339
    Par défaut
    Tente de sauvegarder avec un autre nom de fichier. Si ça marche, ça signifie que l'autre était soit ouvert par un autre programme, soit en lecture seule, soit autre chose ...

  3. #3
    Membre éprouvé

    Profil pro
    Étudiant
    Inscrit en
    Novembre 2008
    Messages
    65
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2008
    Messages : 65
    Par défaut
    Quand je met un autre nom je n'ai aucun problème, il m'enregistre bien.

    Cependant j'ai fermé tous les programmes succeptibles d'utiliser mon fichier, donc c'est bizare !

    En fait j'ai 2 fichiers xml différents, quand je fais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    xmlImmeubles.Save(fichier1);
    xmlTaches.Save(fichier2);
    il me sauvegarde le fichier2 à chaque fois (il suffit de commenter la première ligne et le programme s'execute sans soucis), mais pas le fichier1, dont il me met toujours "path is denied".

  4. #4
    Membre émérite Avatar de ctxnop
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2007
    Messages
    858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Morbihan (Bretagne)

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

    Informations forums :
    Inscription : Juillet 2007
    Messages : 858
    Par défaut
    Je vois de suite un problème : tu te sers de chemin relatif sans vérifier le chemin courant. Pourtant celui-ci peux changer au cours de la vie du programme. Déjà il dépend de l'endroit à partir duquel à été lancé ton programme. Ensuite, certains composants comme par exemple les OpenFileDialog modifient ce chemin courant. Autrement dit, tu ne peux absolument pas être certain du chemin complet de ton fichier.

    Ensuite, il est fréquent qu'on ne puisse écrire n'importe où. Normalement un programme, depuis au moins Windows XP (mais même 2000 il me semble), doit écrire ses données dans Environment.SpecialFolder.ApplicationData. Beaucoup d'installation par défaut ne laissent pas l'utilisateur écrire n'importe où, or le programme tourne sous un utilisateur qui n'est pas forcément administrateur (et ne devrait justement pas l'être).

    Donc, assures-toi de bien écrire dans un endroit où tu as le droit. Ensuite, si ca ne fonctionne toujours pas, c'est que tu à ouvert ce fichier sans le fermer correctement. Par exemple si tu as utilisé des XmlTextReader, ou StreamReader, ... sur ton fichier mais que tu ne les as pas fermé ou disposé. En ce cas, le fichier étant toujours ouvert, il ne peut être modifié.

    Edit : Si tu n'as pas nommé ton fichier "fichier.xml", le nom peux jouer, aussi j'aimerai que tu nous fasse part du vrai nom complet (chemin compris) du fichier.

  5. #5
    Membre éprouvé

    Profil pro
    Étudiant
    Inscrit en
    Novembre 2008
    Messages
    65
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2008
    Messages : 65
    Par défaut
    En fait mes deux fichiers sont :

    fichier1 : Donnees\liste_immeubles.xml
    fichier2 : Donnees\liste_taches.xml

    peut-etre que c'est l"underscore qu'il prend mal, mais ca serait bizare, dans le sens où le fichier 2 il peut le sauvegarder, mais pas le 1.

    Voici le code lors de l'ouverture :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    xmlImmeubles = XElement.Load(@"Donnees\liste_immeubles.xml"); 
    xmlTaches = XElement.Load(@"Donnees\liste_taches.xml");
    Ensuite je travail directement sur xmlImmeubles et xmlTaches qui sont déclarés ainsi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    private XElement xmlImmeubles;
    private XElement xmlTaches;
    c'est par la suite où je fais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    xmlImmeubles.Save(@"Donnees\liste_immeubles.xml");
    xmlTaches.Save(@"Donnees\liste_taches.xml");

  6. #6
    Membre émérite Avatar de ctxnop
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2007
    Messages
    858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Morbihan (Bretagne)

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

    Informations forums :
    Inscription : Juillet 2007
    Messages : 858
    Par défaut
    L'underscore est tout à fait valable dans un nom de fichier, ce n'est pas le problème.
    Les chemins sont tout de même relatifs (et donc possible problème de risquer de sauvegarder dans un répertoire inconnu), mais si les deux .Save() sont fait à la suite, aucune raison que l'un passe mais pas l'autre.
    Sauf si le fichier possède l'attribut read-only (a vérifier donc) où qu'il est ouvert mais pas fermé correctement (même si c'est ton programme qui l'a ouvert).

  7. #7
    Membre éprouvé

    Profil pro
    Étudiant
    Inscrit en
    Novembre 2008
    Messages
    65
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2008
    Messages : 65
    Par défaut
    Ben en fait j'ai vérifié et aucun n'est en read-only, j'ai vérifié aussi les propriétés des fichiers et j'ai les droits dessus.

    J'ai essayé en rebootant l'ordi (au cas ou un programme l'aurait déjà ouvert), mais ca me fait toujours l'erreur.

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

Discussions similaires

  1. [AJAX] Impossible d'utiliser mon fichier XML sous IE
    Par iluv dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 07/06/2007, 12h01
  2. impossible de sauver un fichier XML
    Par yasmine* dans le forum Eclipse Java
    Réponses: 2
    Dernier message: 11/05/2007, 12h17
  3. Impossible d'enregistrer un fichier sur ma clé usb
    Par rimbaut dans le forum Périphériques
    Réponses: 7
    Dernier message: 01/05/2007, 18h07
  4. [Firefox] Impossible d'afficher un fichier XML distant
    Par jamidoquai dans le forum XML/XSL et SOAP
    Réponses: 1
    Dernier message: 04/12/2006, 13h56
  5. Enregistrer un fichier xml dans un string
    Par dondano dans le forum Format d'échange (XML, JSON...)
    Réponses: 5
    Dernier message: 09/06/2006, 13h44

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