簡體   English   中英

為什么我的代碼不會刪除 XML 文件中的特定元素

[英]Why won't my code delete the specific element in a XML file

因此,為了學習 c#,我一直在創建一個程序來顯示我需要記住的內容,並讓我能夠更改和刪除這些內容。 我已經到了制作一個按鈕的階段,該按鈕根據文件的位置從文件中刪除 xml 元素。 問題是只有第一個按鈕會刪除任何東西,它會刪除所有東西。 我想知道我做錯了什么。 有人可以幫忙嗎?

對不起,它很亂。

String Buttonname = (sender as Button).Name;
int RowCount = Int16.Parse(Buttonname.Remove(0, 9));

string appDataPath = Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData);
string dataPath = Path.Combine(appDataPath, "Remembrall 2.0");
string EventslistFullPath = Path.Combine(dataPath, "Events.xml");

Label Labelname = (Label)this.Controls.Find("DetailsLbl"+RowCount, true)[0];
string Detailtext = Labelname.Text;
//gets the text from a dynamicaly generated textbox

MessageBox.Show (Detailtext);

for (int z = 0; z < Table.ColumnCount; z++)
{
    Control con = Table.GetControlFromPosition(z, RowCount);
    Table.Controls.Remove(con);
    con.Dispose();
}

XDocument EventDoc = XDocument.Load(EventslistFullPath);

label1.Text = Detailtext;

EventDoc.Descendants("Events").Where(ele => ele.Element("Event").Value == Detailtext).Remove();
//Deletes the element based off the value of the text.


EventDoc.Save(EventslistFullPath); 

線路

EventDoc.Descendants("Events").Where(ele => ele.Element("Event").Value == Detailtext).Remove();

說“在事件文檔下找到所有<Events>節點;對於每個節點,查看其中的第一個<Event>節點是否與Detailtext匹配;如果匹配,則刪除該<Events> ”。 你的意思可能是:

EventDoc.Descendants("Events").Elements("Event").Where(evt => evt.Value == Detailtext).Remove();

它說“找到所有<Events>節點,並為每個節點找到它下面的所有<Event>節點;刪除任何與Detailtext匹配的<Event> ”。

請注意,這仍然意味着重復項有點冒險,即如果多個節點具有值"abc" ,單擊刪除任何一個"abc"將刪除所有這些..

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM