Ajouter des noeud dans un fichier XML
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 type
Code:
<add key="nom" value="valeur"/>
et donc le Dictionnary contient toutes les clés et valeurs associés.
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# :
Code:
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;
}
} |
voila ce que j'ai commencé à faire :
Code:
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
} |
Là où je n'ai rien changé, c'est que je ne sais pas quoi faire...quelqu'un a une idée ?
Merci d'avance.