XML要素<Contact>
だけを削除しようとしていますが、そのIDはlstBox Selected Indexと一致します。コードは実行されますが、実際にはXMLファイル内のすべてが削除されるため、空のtxtファイルが残っています。私はこのようなコードを持っている:XMLはC言語で削除される
private async void btnDeleteContact_Click(object sender, RoutedEventArgs e)
{
StorageFile file = await Windows.Storage.ApplicationData.Current.LocalFolder.GetFileAsync("Contacts.xml");
XDocument xdoc = XDocument.Load(file.Path);
if (lstBox.SelectedIndex != -1)
{
xdoc.Element("Contacts")
.Elements("Contact")
.Where(x => (string)x.Attribute("ID") == lstBox.SelectedItem.ToString()).Remove();
lstBox.SelectedIndex = -1;
updateXMLFile(xdoc);
}
}
これは私のXMLファイルリストボックスの選択が青色である
<?xml version="1.0" encoding="UTF-8" ?>
<Contacts>
<Contact>
<ID>salpea</ID>
<FirstName>Sally</FirstName>
<LastName>Pearson</LastName>
<Mobile>0431529562</Mobile>
<Email>[email protected]</Email>
</Contact>
<Contact>
<ID>gresul</ID>
<FirstName>Greg</FirstName>
<LastName>Sullivan</LastName>
<Mobile>0432928381</Mobile>
<Email>[email protected]</Email>
</Contact>
<Contact>
<ID>chrmac</ID>
<FirstName>Christie</FirstName>
<LastName>Mack</LastName>
<Mobile>0421231231</Mobile>
<Email>[email protected]</Email>
</Contact>
</Contacts>
です。
わからないそれが関連しているが、これはhere
おかげ問題に関する任意のヘルプファイル全体のための私のペーストビンである場合。
あなたはC#を使用していますか? –
あなたのXMLファイルでは、 ' ... 'は* XML要素ではない* XML属性*だから '(文字列)x.Attribute(" ID ")== lstBox.SelectedItem.ToString()'は常に偽です。そして、実際には、テストでは何も削除されていないようです。だから私は問題が実際には 'updateXMLFile(xdoc);だと思う。あなたはそのコードを共有できますか? –
dbc
「chrmac」というIDの要素を削除しようとすると、何も表示されないデモが行われます。https://dotnetfiddle.net/T6ffsH – dbc