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#] Modification d'un fichier XML


Sujet :

Windows Forms

  1. #1
    Membre confirmé
    Avatar de topolino
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    1 901
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 1 901
    Points : 637
    Points
    637
    Par défaut [c#] Modification d'un fichier XML
    Bonjour,

    pour mon appli j'ai besoin de modifier des attributs dans un fichier xml, y a t il un moyen autre que de tout recuperer afin de recreer entienrement un fichier xml ?

    merci de votre aide
    MCTS Microsoft.
    La conception : Prendre le temps pour gagner du temps.

  2. #2
    Membre chevronné
    Avatar de Piotrek
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2004
    Messages
    869
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Mars 2004
    Messages : 869
    Points : 1 904
    Points
    1 904

  3. #3
    Membre confirmé
    Avatar de topolino
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    1 901
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 1 901
    Points : 637
    Points
    637
    Par défaut
    j'ai tout lu vos liens et je reste un peu perplexe.

    Dans mon cas j'ai un tout petit fichier XML (fichier de config). Je desire juste changer la valeur d'un attribut (de 0 à 1).

    Voila mon code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    XmlNode rootNode=fileXml.DocumentElement;
    XmlNodeList xmlList = rootNode.ChildNodes;
    for(int i=0; i<xmlList.Count; i++) {
    if(xmlList.Item(i).Attributes.Item(0).InnerText == "0"){	
    cImages = xmlList[i].InnerText;
    xmlList.Item(i).Attributes.Item(0).Attributes.Item(0).InnerText = "1";
    break;
    }
    }
    Comment dois je traiter cette ligne pour changer mon attribut :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    xmlList.Item(i).Attributes.Item(0).Attributes.Item(0).InnerText = "1";
    J'utilise XmlDocument fileXml=new XmlDocument();


    merci
    MCTS Microsoft.
    La conception : Prendre le temps pour gagner du temps.

  4. #4
    Membre confirmé
    Avatar de topolino
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    1 901
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 1 901
    Points : 637
    Points
    637
    Par défaut
    je tourne en rond !!! help
    MCTS Microsoft.
    La conception : Prendre le temps pour gagner du temps.

  5. #5
    Membre actif Avatar de toniolol
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Juin 2005
    Messages
    281
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2005
    Messages : 281
    Points : 296
    Points
    296
    Par défaut
    Salut,
    je vais peut-être dire un truc bête mais ne peux-tu pas charger ton xml dans un DataSet, modifier les Rows souhaitées puis ré-écrire ton xml ?
    Ca me semble plus simple d'utiliser les propriétés Read/Write XML du DataSet. M'enfin je pense que ça dépend du contenu de ton xml.
    Pensez aux règles et au qui rime avec !

  6. #6
    Membre confirmé
    Avatar de topolino
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    1 901
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 1 901
    Points : 637
    Points
    637
    Par défaut
    Je veux simplement changer une valeur d'un attribut (de 0 à 1).

    Je trouve ca fou que je sois obligé de passer par un dataset.

    Je vais essayer quand meme.
    MCTS Microsoft.
    La conception : Prendre le temps pour gagner du temps.

  7. #7
    Membre régulier Avatar de Pasiphae
    Inscrit en
    Octobre 2003
    Messages
    110
    Détails du profil
    Informations forums :
    Inscription : Octobre 2003
    Messages : 110
    Points : 104
    Points
    104
    Par défaut
    On sait jamais ca peut etre utile :
    La


    Mais j avais vu un exemple ou effectivement (c etait dans le cas d une installation) ou on passait par un xmldom. Je crois que c est dans l installation du starterkit portal (un truc du genre). Si tu as reflector, tu dois pouvoir verifier. Si je retrouve le code avant, je le fais passer.

  8. #8
    Membre confirmé
    Avatar de topolino
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    1 901
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 1 901
    Points : 637
    Points
    637
    Par défaut
    euh, je parse comment mon dataSet :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    DataSet oDataSet = new DataSet("images");
    oDataSet.ReadXml(@"C:\Inetpub\application\test\wallpaperManagment\xml\images.xml");
    foreach (DataRow row in oDataSet.Tables[0].Rows){
     
    }
    MCTS Microsoft.
    La conception : Prendre le temps pour gagner du temps.

  9. #9
    Membre régulier Avatar de Pasiphae
    Inscrit en
    Octobre 2003
    Messages
    110
    Détails du profil
    Informations forums :
    Inscription : Octobre 2003
    Messages : 110
    Points : 104
    Points
    104
    Par défaut
    J ai un truc dans le genre (si ca peut aider)
    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
      Public Function GetFiltre(ByVal FormulaireName As String, ByVal DataGridViewName As String) As String
     
                Dim _filtre As String = ""
                Try
                    ' Récupération des lignes de filtre
                    Dim tb As DataTable = _data.Formulaire
                    Dim foundRows() As DataRow
                    foundRows = tb.Select("Nom ='" & FormulaireName & "'")
                    Dim gridRows() As DataRow
     
                    For Each rw As DataRow In foundRows
                        gridRows = rw.GetChildRows("Formulaire_Grille")
                        For Each grid As DataRow In gridRows
                            If (grid.Item("Nom") = DataGridViewName) Then
                                If (grid.Item("Filtre") IsNot Nothing) Then
                                    _filtre = grid.Item("Filtre")
                                End If
                            End If
                        Next
                    Next
                Catch ex As System.Exception
                    System.Windows.Forms.MessageBox.Show(ex.Message)
                End Try
     
                Return _filtre
     
            End Function

  10. #10
    Membre confirmé
    Avatar de topolino
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    1 901
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 1 901
    Points : 637
    Points
    637
    Par défaut
    j'arrive à rien !!!!

    avec t.Rows[0].Table.Columns["status"], j'arrive a avoir le nom de la colonne, y a plein de proprietes et de methodes maus impossible d'affixhé la value de mon attribut status. !!!!!


    HELP
    MCTS Microsoft.
    La conception : Prendre le temps pour gagner du temps.

  11. #11
    Membre régulier Avatar de Pasiphae
    Inscrit en
    Octobre 2003
    Messages
    110
    Détails du profil
    Informations forums :
    Inscription : Octobre 2003
    Messages : 110
    Points : 104
    Points
    104
    Par défaut
    J ai retrouvé le truc dont je t ai parlé plus haut. C est un bout de code qui m avait servi pour mettre a jour le ConnectionString d un web.config. J avais trouvé des bouts de code sur des exemples de Crosoft. Ca fonctionne (c etait sous net1.1)

    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
    		// Modification du fichier de configuration "web.config"
    		private void EditConfigFile(String instanceName, String vdir)
    		{
    			// Récupère le chemin du web.config
    			String _dir = GetRep();
    			FileInfo _config = new FileInfo(_dir + @"Web.config");
     
    			// Charge le fichier de config dans un XML
    			XmlDocument _xmlDoc = new XmlDocument();
    			_xmlDoc.Load(_config.FullName);
     
    			// Recherche le noeud correct pour modifier sa valeur
    			foreach (XmlNode Node in _xmlDoc.SelectSingleNode("configuration/appSettings"))
    			{
    				if (Node.Name == "add")
    				{
    					// Modification de la chaine de connexion a la base de données
    					if (Node.Attributes.GetNamedItem("key").Value == "ConnectionString")
    						Node.Attributes.GetNamedItem("value").Value = "Server=" + instanceName + ";Integrated Security=SSPI; Database=Portail; Persist security info=False";
     
    					// Modification du chemin du fichier de configuration xml du portail
    					if (Node.Attributes.GetNamedItem("key").Value == "configFile")
    						Node.Attributes.GetNamedItem("value").Value = "/" + vdir + @"/PortalConf.xml";
     
    					// Modification du chemin virtuel de l application
    					if (Node.Attributes.GetNamedItem("key").Value == "vpath")
    						Node.Attributes.GetNamedItem("value").Value = "/" + vdir;
     
    					// Modification du chemin repertoire IIS
    					if (Node.Attributes.GetNamedItem("key").Value == "vdir")
    						Node.Attributes.GetNamedItem("value").Value = _dir;
    				}
    			}
     
    			// Modifie le fichier de config
    			_xmlDoc.Save(_config.FullName);
    		}
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    		private String GetRep()
    		{
    			String _rep = (this.Context.Parameters["rep"]).ToString();
    			return _rep;
    		}
    J espere que ca te servira.

  12. #12
    Rédacteur
    Avatar de Thomas Lebrun
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    9 161
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 9 161
    Points : 19 434
    Points
    19 434
    Par défaut
    Dans le même genre que Pasiphae, regarde ma classe ConfigReaderWriter:

    http://morpheus.developpez.com/trucs/classes/


  13. #13
    Membre confirmé
    Avatar de topolino
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    1 901
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 1 901
    Points : 637
    Points
    637
    Par défaut
    merci je vais essayer et vous tenir au jus
    MCTS Microsoft.
    La conception : Prendre le temps pour gagner du temps.

  14. #14
    Membre confirmé
    Avatar de topolino
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    1 901
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 1 901
    Points : 637
    Points
    637
    Par défaut
    La solution : http://morpheus.developpez.com/trucs/classes/

    fonctionne bien que je la trouvepas tres intuitive.

    Merci.
    MCTS Microsoft.
    La conception : Prendre le temps pour gagner du temps.

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 13/06/2007, 14h50
  2. modification d'un fichier xml
    Par DanielW33 dans le forum ANT
    Réponses: 1
    Dernier message: 09/10/2006, 16h38
  3. [DOM XML] Modification d'un fichier XML en php
    Par aldo-tlse dans le forum Bibliothèques et frameworks
    Réponses: 4
    Dernier message: 07/07/2006, 18h28
  4. [xml/xsl/xhtml] modification d'un fichier XML
    Par florent_de_brest dans le forum XSL/XSLT/XPATH
    Réponses: 4
    Dernier message: 25/05/2006, 20h43
  5. [DOM] Modification d'un fichier XML
    Par nana1 dans le forum Format d'échange (XML, JSON...)
    Réponses: 3
    Dernier message: 21/11/2005, 23h22

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