我正在尝试将用户数据保存到Windows Phone(7.1)上的XML文件中。在此过程中,我打开现有的XML文件,插入一个新节点,然后尝试保存XML文件。虽然代码在Visual Studio 2010中运行时没有错误,但不会对文件进行更改。我怀疑问题是代码将文件保存到其他地方。我尝试使用XDocument的create命令创建XMLWriter,并将文件的填充路径作为输入参数,但Windows phone系统中受支持的System.XML.Linq(2.0.5)版本不允许这样做。
代码如下:
public void AddSwimGoal(SwimGoal SG)
{
string FileName = "Data/SwimGoals.xml";
XDocument Doc = new XDocument();
Doc = XDocument.Load(@FileName);
XElement Root = Doc.Root;
XElement NewSG = new XElement("SwimGoal");
XAttribute Dist = new XAttribute("Distance", SG.Distance);
XAttribute MaxTD = new XAttribute("MaxTrainingDistance", SG.MaxTrainingDistance);
XAttribute ID = new XAttribute("ID", SG.ID);
XAttribute Name = new XAttribute("Name", SG.Name);
XAttribute StartDate = new XAttribute("StartDate", SG.StartDate);
XAttribute EndDate = new XAttribute("EndDate", SG.EndDate);
XAttribute DesiredTime = new XAttribute("DesiredTime", SG.Desiredtime);
XAttribute Stroke = new XAttribute("Stroke", SG.Stroke);
NewSG.Add(Dist, MaxTD, ID, Name, StartDate, EndDate, DesiredTime, Stroke);
Root.Add(NewSG);
XmlWriter Wr = Doc.CreateWriter();
Doc.Save(Wr);
}
答案 0 :(得分:0)
这是我用来将XML保存到独立存储的代码。您可能认为它正在将其保存在其他地方。以下内容可能会解决该问题。
private void saveXML()
{
using (IsolatedStorageFile store = IsolatedStorageFile.GetUserStoreForApplication())
{
IsolatedStorageFileStream stream = store.OpenFile("myapp.Xml", FileMode.Create, FileAccess.Write);
_xdoc.Save(stream);
stream.Dispose();
}
}
尝试更改向xml文件添加元素的方式:
_xdoc = new XDocument(
new XComment("Created " + DateTime.Now.ToLongTimeString()),
new XElement("a",
new XElement("b",
new XElement("c", this.tb_vehicleName.Text.ToString(), new XAttribute("id", 123)),
new XElement("d", ""))));
答案 1 :(得分:0)
我现在意识到文件未保存的原因是,当这项工作完成后,它在模拟器上完成,当文件保存时,我将关闭模拟器。这会破坏文件,这也是我打开文件时无法找到文件更改的原因。如果在重新打开模拟器时无法找到文件,打开文件的代码只用根节点替换空白文档。