使用C#删除XML节点仅清空内容未删除节点,如何彻底删除?
问题解决:彻底删除XML中的Flight节点
你的代码里用elem.RemoveAll()只会清空Flight节点的属性和子元素,不会删除节点本身,所以才会留下<Flight />空标签。要彻底删除整个Flight节点,只需要把elem.RemoveAll()替换成elem.Remove(),同时可以简化代码逻辑,避免不必要的嵌套循环:
修改后的代码:
private void b_delete_Click(object sender, EventArgs e) { var xDoc = XDocument.Load(input); // 筛选出ID为"1"的Flight节点并彻底删除 xDoc.Descendants("Flight") .Where(flight => flight.Attribute("ID")?.Value == "1") .Remove(); xDoc.Save(input); MessageBox.Show("删除成功"); }
说明:
Descendants("Flight"):获取XML中所有Flight节点Where(...):筛选出ID属性值等于"1"的目标节点Remove():直接删除选中的节点,而不是清空内容,这样XML里不会留下空的Flight标签,也就不会破坏你的自动生成ID功能。
内容的提问来源于stack exchange,提问作者hank
相关产品推荐
相关产品推荐

