日期:2014-05-20  浏览次数:20751 次

LINQ操作XMl后的问题?
WPFDemo\Data\Data.xml为原数据

追加元素

string xmlFileName = System.IO.Path.Combine(Environment.CurrentDirectory, @"Data\Data.xml");
            XDocument xDoc = XDocument.Load(xmlFileName);
            xDoc.Root.Add(new XElement("Dish",
                            new XElement("Name", dish.Name), 
                            new XElement("Category", dish.Category),
                            new XElement("Comment", dish.Comment),
                            new XElement("Score", dish.Score)));
            xDoc.Save("Data\\Data.xml", SaveOptions.None);

修改的Data却是WPFDemo\bin\Debug\Data\Data.xml
过不了多久追加的元素会还原和WPFDemo\Data\Data.xml一样,
这问题怎么解决,
XML LINQ

------解决方案--------------------
Environment.CurrentDirectory 就是你EXE运行的目录,不就是bin\Debug?
------解决方案--------------------
如果你设置 WPFDemo\Data\Data.xml 的Copy to OutDirectory为 Copy always 或Copy if newer,
那下次运行EXE时,当然会用WPFDemo\Data\Data.xml覆盖WPFDemo\bin\Debug\Data\Data.xml

 xDoc.Save("Data\\Data.xml", SaveOptions.None);
=================
 xDoc.Save(xmlFileName?, SaveOptions.None);
------解决方案--------------------
你可以为你的xml文件指定一个访问目录。不管是读取还是写入都访问这个目录