如何在Windows Phone 7.1应用程序中编辑XML文件

时间:2012-02-24 22:23:37

标签: xml xml-serialization windows-phone-7.1

我正在尝试将用户数据保存到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);
    }

2 个答案:

答案 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)

我现在意识到文件未保存的原因是,当这项工作完成后,它在模拟器上完成,当文件保存时,我将关闭模拟器。这会破坏文件,这也是我打开文件时无法找到文件更改的原因。如果在重新打开模拟器时无法找到文件,打开文件的代码只用根节点替换空白文档。