Bonjour,
Je n'ai pas le temps d'expliquer précisément mon problème (je le ferai cet aprem surement) mais en gros je voudrais savoir comment créer un nouveau noeud à un endroit précis dans un document XML.
Merci d'avance (j'expliquerai plus cet aprem...desolé).
EDIT :
En fait, J'ai un document XML qu'on appelera "doc" et à côté un Dictionnary<string key, string value> qu'on appelera "dico". Le document XML contient des balises de typeet donc le Dictionnary contient toutes les clés et valeurs associés.
Code : Sélectionner tout - Visualiser dans une fenêtre à part <add key="nom" value="valeur"/>
Je veux modifier le document XML en ajoutant ou en modifiant des balises du type cité plus haut. Pour cela, j'ai une méthode qui modifie ou crée une case dans "dico". Ensuite, on appelle une méthode Save() qui sauvegarde ce qui a été modifié en parcourant le Dioctionnary et à partir de là, affecter chaque valeur à la clé associée, ou créer une nouvelle balise.
J'ai déjà fait cela sous Android avec MonoDroid, et j'ai un modèle en C# dont je m'étais inspirer. Voila ce que ça donne en c# :
voila ce que j'ai commencé à faire :
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 public static void Save() { XmlDocument dom = new XmlDocument(); XmlNode nodeAppSettings = null; dom.Load(filename); nodeAppSettings = dom.DocumentElement["appSettings"]; foreach (string key in dico.AllKeys) { AddSetting(nodeAppSettings, key, dico[key]); } dom.Save(filename); } private static void AddSetting(XmlNode appSettings,string key,string value) { XmlNode appSetting = appSettings.SelectSingleNode(string.Format("add[@key='{0}']", key)); if (appSetting == null) { appSetting = appSettings.AppendChild(appSettings.OwnerDocument.CreateElement("add")); appSetting.Attributes.Append(appSettings.OwnerDocument.CreateAttribute("key")).Value = key; appSetting.Attributes.Append(appSettings.OwnerDocument.CreateAttribute("value")).Value = value; } else { appSetting.Attributes["value"].Value = value; } }
Là où je n'ai rien changé, c'est que je ne sais pas quoi faire...quelqu'un a une idée ?
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 void Save() { XDocument dom = null; XElement nodeAppSettings = null; using (IsolatedStorageFile store = IsolatedStorageFile.GetUserStoreForApplication()) { using (IsolatedStorageFileStream isoStream = store.OpenFile(fileName, FileMode.OpenOrCreate)) { dom = XDocument.Load(isoStream); nodeAppSettings = dom.Element("appSettings"); foreach (string key in dico.Keys) { AddSetting(nodeAppSettings, key, (string)AppSettings[key]); } dom.Save(isoStream); } } } private void AddSetting(XElement appSettings, string key, string value) { XElement appSetting = appSettings.Element(string.Format("add[@key='{0}']", key)); //Je n'ai rien changé ici }
Merci d'avance.
Partager