过去一小时我一直在摆弄这个问题所以我认为你们可以在周五下午帮忙!
我正在尝试编辑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();
}
我在哪里放置删除“时间”节点的代码并保存文件?
答案 0 :(得分:0)
您应该将IsolatedStorageFileStream
与StreamWriter
一起使用。
见How to: Read and Write to Files in Isolated Storage
使用XDocument
,您必须将新内容保存()到流中。
答案 1 :(得分:0)
您的保存代码不进行任何保存 - 您只需创建XmlWriter
并对其执行任何操作。
XDocument
内置的各种方法可以帮到你。虽然您可以将XmlWriter
传递给它,但您实际上可以直接保存到流中:
test.Save(doc);
请注意,您需要在写入之前移动到流的开头 - 加载XML将读到最后:
doc.Position = 0;