我有以下XML结构:
.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, @"DataCredential.xml");
XDocument document = XDocument.Load(xmlPath);
document.RemoveNodes();
}
这似乎不起作用。我还做了以下工作:
尝试 #2
string xmlPath = Path.Combine(Environment.CurrentDirectory, @"DataCredential.xml");
XDocument document = XDocument.Load(xmlPath);
foreach (var node in document.Descendants("Users"))
{
node.Remove();
}
但这会产生异常错误。
归根结底,我只想使用以下文件数据回到原点:
<?xml version="1.0" encoding="utf-8" ?>
<Users>
</Users>
这应该可以正常工作:
XDocument document = XDocument.Load(xmlPath);
document.Descendants("Users").Elements().Remove();
正如@Cory所建议的,替代和更快的方法是:
document.Root.Elements().Remove();
当您迭代从中删除的集合时,它可能会在第二次尝试时爆炸。 试试这个。
string xmlPath = Path.Combine(Environment.CurrentDirectory, @"DataCredential.xml");
XDocument document = XDocument.Load(xmlPath);
var nodes = document.Descendants("Users");
while(nodes.Count > 0)
{
nodes[0].Remove();
}