2016-05-10 1 views
1

Je supprime un élément de xml avec ce code ci-dessous;Après la suppression d'un élément du fichier xml, XDocument ajoute une ligne à la fin

StorageFolder localFolder = Windows.Storage.ApplicationData.Current.LocalFolder; 
StorageFile MyFile = await localFolder.GetFileAsync("CustomTV.xml"); 
var stream4 = await MyFile.OpenStreamForReadAsync(); 
XDocument myXml2 = XDocument.Load(stream4); 
myXml2.Element("channelLists") 
       .Elements("channellist") 
       .Where(x => (string)x.Attribute("lname") == lnameselectedText) 
       .Remove(); 
using (var stream = await (await ApplicationData.Current.LocalFolder.CreateFileAsync("CustomTV.xml", CreationCollisionOption.OpenIfExists)).OpenAsync(FileAccessMode.ReadWrite)) 
{ 
    myXml2.Save(stream.AsStreamForWrite()); 
} 

avant la suppression de l'élément avec l'attribut "lname = name3";

<?xml version="1.0" encoding="utf-8"?> 
<channelLists> 
<channellist lname="name1" /> 
<channellist lname="name2" /> 
<channellist lname="name3" /> 
<channellist lname="name4" /> 
</channelLists> 

après la suppression;

<?xml version="1.0" encoding="utf-8"?> 
<channelLists> 
<channellist lname="name1" /> 
<channellist lname="name2" /> 
<channellist lname="name4" /> 
</channelLists>lname="name4"/> //It adds all the time this line with last elements attribute. 
</channelLists> 

Quel est le problème?

Répondre

0

On dirait que votre code écrit du XML modifié par-dessus le XML original. Voilà pourquoi vous voyez rappel du XML d'origine qui est situé au-delà de l'étendue du XML modifié:

lname="name4"/> 
</channelLists> 

Cela dit, CreationCollisionOption.ReplaceExisting pourrait être plus approprié dans ce cas.

+0

Je pense que c'est la raison, mais cette fois je reçois une alerte "accès refusé" sur le débogage. – user2542030

+0

Fermez le flux qui était utilisé pour charger le fichier XML existant avant d'écrire le fichier XML modifié? – har07

+1

Modifier: J'ai ajouté "stream4.Dispose();" ligne après "XDocument myXml2 = XDocument.Load (stream4);" et a fait ce que @ har07 a dit, problème résolu. – user2542030