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

Windows Forms Discussion :

[C#/XML] Modifier Noeud


Sujet :

Windows Forms

  1. #1
    Membre confirmé
    Inscrit en
    Juin 2008
    Messages
    90
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 90
    Par défaut [C#/XML] Modifier Noeud
    Bonjour je suis débutant en C# et j'ai un petit problème.

    Voici mon fichier xml a modifier :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <SOCLE>
      <LIMITE>
        <DATE_EXPIRATION>31/12/2008</DATE_EXPIRATION>
        <DERNIERE_OUVERTURE>12/11/2008</DERNIERE_OUVERTURE>
      </LIMITE>
    </SOCLE>

    Et mon code :
    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
     
                XmlDocument xml_doc = new XmlDocument();
                xml_doc.Load("text.xml")
                res = "";
                XmlNodeList nl = xml_doc.SelectNodes("LIMITE");
                foreach (XmlNode xn in nl)
                {
                    if (xn.Name == "DERNIERE_OUVERTURE")
                    {
                        res = DateTime.Now.ToString("dd/MM/yyyy");
                        xn.InnerText = res;
                    }
                }
     
                xml_doc.Save("socle.xml");
    J'essaie de mettre à jour la date de DERNIERE_OUVERTURE. Quand j'exécute aucune erreur mais le fichier n'est pas modifié. Je ne voix pas d'où peut venir mon problème.

    Merci d'avance

  2. #2
    Rédacteur
    Avatar de Paul Musso
    Profil pro
    Inscrit en
    Août 2008
    Messages
    368
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Août 2008
    Messages : 368
    Par défaut
    Bonjour,

    Cela vient peut-être du fait que ton fichier XML est copié dans le dossier DEBUG à chaque compilation. Du coup, le fichier text.xml est écrasé à chaque fois que tu recompiles.

    Ceci dit, ce comportement n'est pas un mal en soit. Pour vérifier que c'est bien ça, après l'exécution de ton programme ouvre ton fichier xml via Windows pour voir s'il contient les modifs enregistrées.

  3. #3
    Membre confirmé
    Inscrit en
    Juin 2008
    Messages
    90
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 90
    Par défaut
    Le fichier est exactement le même après l'exécution en contenu. Mais la date de modification est bien mise à jour.

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2007
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 21
    Par défaut
    Citation Envoyé par JOBiJOBa3 Voir le message
    Le fichier est exactement le même après l'exécution en contenu. Mais la date de modification est bien mise à jour.
    Au fait tu changes ton noeud mais t'es pas entrain d'écrire sur le fichier.
    Déclares un XmlTextWriter pour pouvoir écrire sur le fichier.

  5. #5
    Membre confirmé
    Inscrit en
    Juin 2008
    Messages
    90
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 90
    Par défaut
    Comment est-ce que l'on ce sert d'un XmlTextWriter ?

  6. #6
    Rédacteur
    Avatar de Paul Musso
    Profil pro
    Inscrit en
    Août 2008
    Messages
    368
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Août 2008
    Messages : 368
    Par défaut
    Euh je crois plutôt que le problème vient de là :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    XmlNodeList nl = xml_doc.SelectNodes("LIMITE");
    Tu ne récupères aucun noeud ...

    Ca devrait mieux marcher avec ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    XmlNodeList nl = xml_doc.SelectNodes("SOCLE/LIMITE/DERNIERE_OUVERTURE");

  7. #7
    Membre confirmé
    Inscrit en
    Juin 2008
    Messages
    90
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 90
    Par défaut
    Merci Paul Musso ta solution fonctionne à merveille.
    Merci aussi à Mouloch.

  8. #8
    Membre confirmé
    Inscrit en
    Juin 2008
    Messages
    90
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 90
    Par défaut
    Bonjour,
    Mon code fonctionne très bien pour des string mais pas avec des entiers.

    Voici l'exception qu'il me donne :
    La référence d'objet n'est pas définie à une instance d'un objet.
    Sur cette ligne là :
    XmlNodeList nl = xml_doc.SelectNodes("SOCLE/AUTRE/TYPE");
    Les sorties du xml ne sont pas que de type string? Et c'est à nous de les transformer par la suite.

    Pour mon exemple précédent je chercher une date(dans le xml) et je lui passe une date en string. Maintenant je cherche un entier et je veux lui passer un string et l'exception ressort.

    Merci d'avance

  9. #9
    Membre éclairé
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    537
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 537
    Par défaut
    Juste comme ça dans ton premier code si à la place de mettre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    xn.InnerText = res;
    tu places :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    xn.FirstChild.Value=res;

  10. #10
    Membre confirmé
    Inscrit en
    Juin 2008
    Messages
    90
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 90
    Par défaut
    Je suis désolé mais c'était un problème dans mon algorithme.

    Merci quand même.

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

Discussions similaires

  1. Parcourir et modifier noeuds xml
    Par snopims dans le forum ASP.NET
    Réponses: 1
    Dernier message: 08/12/2008, 13h00
  2. [XML] Modifier ou supprimer un Element
    Par FlyByck dans le forum Delphi
    Réponses: 7
    Dernier message: 01/07/2007, 02h59
  3. Réponses: 2
    Dernier message: 20/06/2007, 11h16
  4. asp xml modifier
    Par Alex35 dans le forum ASP
    Réponses: 1
    Dernier message: 06/02/2007, 22h54
  5. [DOM] Modifier noeud root
    Par rainz dans le forum Format d'échange (XML, JSON...)
    Réponses: 5
    Dernier message: 16/08/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