C# XDocument赢得';无法保存到文件

C# XDocument赢得';无法保存到文件,c#,xml,C#,Xml,尝试编写一些简单的代码,看看是否能够掌握XML业务的窍门 public static void Save() { XDocument doc = XDocument.Load("Repository/Test.xml"); foreach (Produs p in produse) { // Yes there are multiple elements ('p'), have checked XElement root = new XElemen

尝试编写一些简单的代码,看看是否能够掌握XML业务的窍门

public static void Save() {
    XDocument doc = XDocument.Load("Repository/Test.xml");
    foreach (Produs p in produse) {
        // Yes there are multiple elements ('p'), have checked
        XElement root = new XElement("Produs");
        root.Add(new XElement("Name", p.getName()));
        root.Add(new XElement("Quantity", p.getQuant().ToString()));
        doc.Element("Produse").Add(root); // This "Produse" here should be the root element of the XML file, right ?
        //doc.Save("Repository/Test.xml");
    }
    doc.Save("Repository/Test.xml"); // moved here

}
没有编译或运行时错误,但文件内没有任何更改。我确实从文件中读取,所以它确实有效

有关.xml文件的其他信息(在visual studio中):

构建操作:内容
复制到输出目录:始终复制

您意识到在循环的每次迭代中都会覆盖文件,对吗?我怀疑你是想把
Save
调用放在循环之后。但是每次调用
Save
时,您应该已经看到一个新元素了……但我没有看到。好的,把它移到外面,还是没什么。你能制作一个简短但完整的程序来演示这个问题吗?您是否在调试器中逐步完成了代码?加载文档后,您能在调试器中看到它吗?标准错误是您查看的文件错误。如果不指定完整路径,例如c:\foo\bar\baz.xml,就会发生这种情况。真正的程序永远不会写入“Repository/Test.xml”,当Windows停止它写入c:\program files子目录时,它就会崩溃。使用Environment.GetFolderPath()。在foreach循环中定义的
produse
在哪里?另外,使用
doc.Root.Add()
确保您的目的是添加到根元素。