Ajouter new XElement à Xdocument

J'ai le code suivant, qui a écrit dans un fichier XML. Cependant, il remplace à chaque fois en raison de la tagRegistry.Save() de l'appel. Comment puis-je ajouter un nouveau XElement pour le fichier existant? Au moment où le fichier est tout simplement écrasé.

public void saveTag()
{
if (File.Exists("/tagRegistry.xml"))
{
XElement tagRegistry = XElement.Load("/tagRegistry.xml");
XElement newTag = new XElement("Tag",
new XElement("tag", stringUid),
new XElement("name", desiredName),
new XElement("latitude", latitude),
new XElement("longitude", longitude));
tagRegistry.Add(newTag);
using (var storage = IsolatedStorageFile.GetUserStoreForApplication())
{
using (Stream stream = storage.CreateFile("/tagRegistry.xml"))
{
tagRegistry.Save(stream);
}
}
}
else
{
XDocument tagRegistry = new XDocument(new XElement("SmartSafe"));
tagRegistry.Element("SmartSafe").Add(new XElement("Tag",
new XElement("tag", stringUid),
new XElement("name", desiredName),
new XElement("latitude", latitude),
new XElement("longitude", longitude)));
using (var storage = IsolatedStorageFile.GetUserStoreForApplication())
{
using (Stream stream = storage.CreateFile("/tagRegistry.xml"))
{
tagRegistry.Save(stream);
}
}
}
}
Vous ne pouvez pas ... le seul moyen est que vous l'avez fait, en écrasant le fichier existant.
Bon, alors comment puis-je créer un nouveau fichier XML contenant les données anciennes, avec les nouvelles données?
Je l'ai fait en haut du bloc dans l'instruction if. Comment puis-je ajouter de la lecture de données dans le nouveau fichier...? Je vous remercie beaucoup pour votre aide pour l'instant
Ah, désolé, je ne savais pas que l'. Je ne vois pas pourquoi cela ne fonctionnerait pas? Vous avez chargé existant dans tagRegistry, puis ajouté newTag.
Juste une suggestion, ne pas nid using (...) déclarations de cette façon, la solution standard est de les placer sous les uns les autres sans crochets ou à l'indentation.

OriginalL'auteur anthonyhumphreys | 2013-07-15