Я хочу удалить узлы из моего документа, когда пользователь выбирает строку в моей DataGrid и нажимает кнопку Удалить.
Мой результат показывает, что был удален только внутренний XML, но теги все еще остаются в моем документе.
Есть идеи?
Я также попробовал:
n.ParentNode.ChildNodes.Remove(n);
public void Delete_Click(object sender, RoutedEventArgs e)
{
JobList selected = (JobList)DG.SelectedItem;
MessageBox.Show("ROW WITH ID : " + selected.Job + " HAS BEEN SELECTED.");
DG.Items.Remove(selected);
DeleteXmlNode(@"C:\Users\contract_lshamoon\Desktop\arm\arm\arm\xmldb.xml", "Job", selected.Job);
}
private static void DeleteXmlNode(string path, string tagname, string searchconditionAttributevalue)
{
XmlDocument doc = new XmlDocument();
doc.Load(path);
XmlNodeList nodes = doc.GetElementsByTagName(tagname);
AddFileSecurity(path, FileSystemRights.ReadData, AccessControlType.Allow);
XmlNode root = doc.DocumentElement;
foreach (XmlNode n in root)
{
Console.WriteLine(n.Name);
if (n.Attributes["JobId"].Value == searchconditionAttributevalue)
{
n.RemoveAll();
}
}
doc.Save(path);
}
<?xml version="1.0" encoding="utf-8"?>
<Jobs>
<Job>
</Job>
<Job JobId="d7bf1b4e-a452-4417-aa72-2ba23c246fc3">
<JobDate>04/09/2019 2:21 PM</JobDate>
<File>C:\Users\contract_lshamoon\Desktop\filedeleter\index - Copy.js</File>
<FilePath>C:\Users\contract_lshamoon\Desktop\filedeleter</FilePath>
<Extension>js</Extension>
<Age>1</Age>
<JobComment>Deleted : 62 files.</JobComment>
</Job>
<Job JobId="997dd4cd-b29f-4de4-ad0f-4d4d72a5fe28">
<JobDate>04/09/2019 2:21 PM</JobDate>
<File>C:\Users\contract_lshamoon\Desktop\filedeleter\index.js</File>
<FilePath>C:\Users\contract_lshamoon\Desktop\filedeleter</FilePath>
<Extension>js</Extension>
<Age>1</Age>
<JobComment>Deleted : 55 files.</JobComment>
</Job>
</Jobs>