Meilleur auteur de réponses
XML - Ajouter ou modifier un élément

Question
-
Bonjour,
Voici un fichier XML que j'aimerais modifier (ajouter ou modifier un élément):
<?xml version="1.0" encoding="utf-8"?> <UsersSettings> <Users> <User UserLogin="USER0142"> <CheckLeftFooters>Y</CheckLeftFooters> </User> <User UserLogin="USER0143"> <CheckLeftFooters>Y</CheckLeftFooters> </User> <User UserLogin="USER0144"> <CheckLeftFooters>Y</CheckLeftFooters> </User> <User UserLogin="USER0145"> <CheckLeftFooters>Y</CheckLeftFooters> </User> </Users> </UsersSettings>
Voici ce que j'ai écrit (c'est un extrait du code) mais à chaque fois il rajoute la partie "Users" à la fin du fichier existant au lieu d'écrire dans la section "UsersSettings".
using (var fileStream = new FileStream(settingsFileUsers, FileMode.Open, FileAccess.ReadWrite, FileShare.None)) { XElement xml = XElement.Load(fileStream).Element("Users"); var user = (from u in xml.Elements() where (string)u.Attribute("UserLogin") == Utilities.UserLogin select u).SingleOrDefault(); if (user == null) { xml.Add(new XElement("User", new XAttribute("UserLogin", Utilities.UserLogin), new XElement(CheckLeftFooters, userSettings.CheckLeftFooters ? "Y" : "N"))); xml.Save(fileStream); } else { user.SetElementValue(CheckLeftFooters, userSettings.CheckLeftFooters ? "Y" : "N"); xml.Save(fileStream); } }
Merci.
Patrick
- Modifié P. Fredin jeudi 6 août 2015 19:40
Réponses
-
Bonsoir,
ces 2 liens devrai :
http://www.dotnetperls.com/xmlwriter
http://csharp.net-tutorials.com/xml/writing-xml-with-the-xmldocument-class/
Cordialement
- Marqué comme réponse Teodora SharkovaModerator mardi 1 septembre 2015 00:59
-
Bonsoir,
Plutôt qu'utiliser un filestream, vous pourriez utiliser le path vers le fichier directement dans la méthode statique XElement.Load et la méthode Save de la classe XElement (sur votre variable "xml").
Par ailleurs, vous pourriez réorganiser votre code pour sortir la xml.save(fileStream) de votre if/else et la placer juste en dessous car vous l'appelez de toute façon. Ca fait toujours une ligne de code en moins.
- Marqué comme réponse Teodora SharkovaModerator mardi 1 septembre 2015 00:59
Toutes les réponses
-
Bonsoir,
ces 2 liens devrai :
http://www.dotnetperls.com/xmlwriter
http://csharp.net-tutorials.com/xml/writing-xml-with-the-xmldocument-class/
Cordialement
- Marqué comme réponse Teodora SharkovaModerator mardi 1 septembre 2015 00:59
-
Bonsoir,
Plutôt qu'utiliser un filestream, vous pourriez utiliser le path vers le fichier directement dans la méthode statique XElement.Load et la méthode Save de la classe XElement (sur votre variable "xml").
Par ailleurs, vous pourriez réorganiser votre code pour sortir la xml.save(fileStream) de votre if/else et la placer juste en dessous car vous l'appelez de toute façon. Ca fait toujours une ligne de code en moins.
- Marqué comme réponse Teodora SharkovaModerator mardi 1 septembre 2015 00:59