如何在IsolatedStorage C#中编辑文件

时间:2016-01-15 15:33:33

标签: c# xml

过去一小时我一直在摆弄这个问题所以我认为你们可以在周五下午帮忙!

问题

我正在尝试编辑localstorage中的XML文件,但无法弄清楚如何编辑现有文件并重新保存文件。编辑我已经从XML中删除了某个节点。

代码

这是完成所有工作的方法。

第一个代码片段已经在代码中,基本上创建了XML文件并将其保存到localstorage。:

protected byte[] CreateFileData(PortableBusinessObjects.Location location, string geoObjectFilename)
{
    byte[] fileData = null;
    var xmlFile = System.IO.Path.GetFileNameWithoutExtension(geoObjectFilename) + ".xml";
    var zipFile = System.IO.Path.GetFileNameWithoutExtension(geoObjectFilename) + ".zip";  

    using (IsolatedStorageFileStream fileStream = localStorage.CreateFile(xmlFile))
    {
                XmlWriter writer = XmlWriter.Create(fileStream);
                if (location.GetType() == typeof(PortableBusinessObjects.Shape))
                    _xmlShapeSerializer.Serialize(writer, location);
                else if (location.GetType() == typeof(PortableBusinessObjects.Point))
                    _xmlPointSerializer.Serialize(writer, location);
                fileStream.Flush();
                fileStream.Close();
    }                 
}

这是我尝试覆盖保存的文件(不起作用):

using (IsolatedStorageFileStream doc = localStorage.OpenFile(xmlFile, FileMode.Open))
{

    System.Xml.Linq.XDocument test = System.Xml.Linq.XDocument.Load(doc);
    test.Descendants("Time").Remove();

     XmlWriter writer = XmlWriter.Create(doc);


     doc.Flush();
     doc.Close();
}

问题

我在哪里放置删除“时间”节点的代码并保存文件?

2 个答案:

答案 0 :(得分:0)

您应该将IsolatedStorageFileStreamStreamWriter一起使用。 见How to: Read and Write to Files in Isolated Storage 使用XDocument,您必须将新内容保存()到流中。

答案 1 :(得分:0)

您的保存代码不进行任何保存 - 您只需创建XmlWriter并对其执行任何操作。

XDocument内置的各种方法可以帮到你。虽然您可以将XmlWriter传递给它,但您实际上可以直接保存到流中:

test.Save(doc);

请注意,您需要在写入之前移动到流的开头 - 加载XML将读到最后:

doc.Position = 0;