我有以下XML结构:
<?xml version="1.0" encoding="utf-8" ?>
<Users>
</Users>
在某些时候,<Users>
会被不同的用户填满,但我希望能够在一个简单的函数中删除它们。
/// <summary>
/// Removes all nodes from XML creds file on application close
/// </summary>
public static void RemoveXMLData()
{
string xmlPath = Path.Combine(Environment.CurrentDirectory, @"Data\Credential.xml");
XDocument document = XDocument.Load(xmlPath);
document.RemoveNodes();
}
这似乎不起作用。我也完成了以下工作:
string xmlPath = Path.Combine(Environment.CurrentDirectory, @"Data\Credential.xml");
XDocument document = XDocument.Load(xmlPath);
foreach (var node in document.Descendants("Users"))
{
node.Remove();
}
但这会产生异常错误。
在一天结束时,我只想回到以下文件数据的第一个方面:
<?xml version="1.0" encoding="utf-8" ?>
<Users>
</Users>
答案 0 :(得分:1)
这应该可以正常工作:
XDocument document = XDocument.Load(xmlPath);
document.Descendants("Users").Elements().Remove();
正如@Cory所建议的那样,替代和更快的方法是:
document.Root.Elements().Remove();
答案 1 :(得分:0)
当您迭代从中删除的集合时,它可能会在第二次尝试时爆炸。试试这个。
string xmlPath = Path.Combine(Environment.CurrentDirectory, @"Data\Credential.xml");
XDocument document = XDocument.Load(xmlPath);
var nodes = document.Descendants("Users");
while(nodes.Count > 0)
{
nodes[0].Remove();
}