Comment mettre à Jour un Nœud XML?
Il est facile de lire un fichier XML et de trouver le Nœud de Texte, mais comment puis-je mettre à Jour ce Nœud avec une nouvelle valeur?
À lire:
public static String GetSettings(SettingsType type, SectionType section)
{
XmlTextReader reader = new XmlTextReader(HttpContext.Current.Request.MapPath(APPSETTINGSPATH));
XmlDocument document = new XmlDocument();
document.Load(reader);
XmlNode node = document.SelectSingleNode(
String.Format("/MyRootName/MySubNode/{0}/{1}",
Enum.Parse(typeof(SettingsType), type.ToString()),
Enum.Parse(typeof(SectionType), section.ToString())));
return node.InnerText;
}
d'écrire ...?
public static void SetSettings(SettingsType type, SectionType section, String value)
{
try
{
XmlTextReader reader = new XmlTextReader(HttpContext.Current.Request.MapPath(APPSETTINGSPATH));
XmlDocument document = new XmlDocument();
document.Load(reader);
XmlNode node = document.SelectSingleNode(
String.Format("/MyRootName/MySubNode/{0}/{1}",
Enum.Parse(typeof(SettingsType), type.ToString()),
Enum.Parse(typeof(SectionType), section.ToString())));
node.InnerText = value;
node.Update();
}
catch (Exception ex)
{
throw new Exception("Error:", ex);
}
}
Note la ligne, nœud.Mise à jour(); n'existe pas, mais qu'est ce que je voulais 🙂
J'ai vu le XmlTextWriter objet, mais il va écrire l'ensemble de XML dans un nouveau fichier, et j'ai juste besoin de mettre à jour la valeur dans le Nœud d'origine, je peux l'enregistrer comme un nouveau fichier, et renommer le nouveau fichier dans le nom original, mais... elle doit être plus simple à faire de ce droit?
L'un de vous les gars, vous avez un exemple de code sur sur le point de le faire?
Merci
OriginalL'auteur balexandre | 2009-01-27
Vous devez vous connecter pour publier un commentaire.
Vous n'avez pas besoin d'une "mise à jour" de la méthode d'établissement de la propriété InnerText mises à jour. Toutefois, il ne concerne que la mise à jour dans la mémoire. Vous ne besoin de réécrire l'ensemble du fichier si vous ne pouvez pas simplement mettre à jour une petite partie (au moins, pas sans un beaucoup de travail et pas de out-of-the-box).
Ce que vous entendez par "enregistrer le résultat réel pour les variables"? Les variables?
Je suis seulement en mesure d'enregistrer les modifications "en mémoire" quand j'ouvre le fichier xml je ne vois pas de changements, c'est valable à l'exemple de la question et à l'aide de ConfigurationManager.AppSettings[...] pour utiliser <AppConfig> zone web.fichier de configuration.
il est vrai que si j'utilise AppConfig section dans le Web.Fichier de configuration uniquement! 🙂
Ce que Jon est en train de dire, c'est que lorsque vous chargez le document XML en question, qu'il se charge dans la mémoire de l'application. Toutes les mises à jour des nœuds de rester dans la mémoire de chargement. Il n'est pas jusqu'à ce que vous écrivez la sauvegarde XML dans le fichier, et votre application détecte le changement de fichier, les modifications se propagent à l'utilisateur.
OriginalL'auteur Jon Skeet
XmlDocument.Load
a une surcharge qui prendra le nom de fichier directement, donc il n'est pas nécessaire pour le lecteur.De même, lorsque vous avez terminé
XmlDocument.Save
prennent un nom de fichier à enregistrer le document.ou même document.Enregistrer(écrivain);
OriginalL'auteur AnthonyWJones
Le nodeValue propriété peut être utilisée pour modifier la valeur d'un nœud de texte.
La suite de modifications du code du nœud de texte la valeur du premier élément:
Exemple:
source: http://www.w3schools.com/DOM/dom_nodes_set.asp
OriginalL'auteur EvilInside
Vous êtes à la mise à jour du nœud dans un en mémoire représentation du document xml, autant que je sache, il n'y a pas moyen de mettre à jour le nœud directement dans le fichier physique. Vous devez vider toutes les revenir dans un fichier.
OriginalL'auteur axel_c