1
xmlから要素を削除します。xmlから要素を削除した後、XDocumentは最後に行を追加します
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());
}
属性 "lname = name3"の要素を削除する前。
<?xml version="1.0" encoding="utf-8"?>
<channelLists>
<channellist lname="name1" />
<channellist lname="name2" />
<channellist lname="name3" />
<channellist lname="name4" />
</channelLists>
削除後;
<?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>
何が問題ですか?
私はそれが理由だと思いますが、今回はデバッグ時に「アクセス拒否」アラートが表示されます。 – user2542030
変更されたxmlを書き込む前に、既存のXMLをロードするために使用されたストリームを閉じますか? – har07
編集: "stream4.Dispose();"を追加しました。 "XDocument myXml2 = XDocument.Load(stream4);"の後の行。 @ har07は何を言ったのか、問題は解決しました。 – user2542030