C# XDocument赢得';无法保存到文件
尝试编写一些简单的代码,看看是否能够掌握XML业务的窍门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
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()
确保您的目的是添加到根元素。