[英]Create new XDocument with XElement from StreamReader text
[英]Add new XElement to Xdocument
我有以下代碼,它成功寫入 XML 文件。 但是,由於進行了 tagRegistry.Save() 調用,它每次都會覆蓋。 如何向現有文件添加新的 XElement? 目前該文件只是被覆蓋。
public void saveTag()
{
if (File.Exists("/tagRegistry.xml"))
{
XElement tagRegistry = XElement.Load("/tagRegistry.xml");
XElement newTag = new XElement("Tag",
new XElement("tag", stringUid),
new XElement("name", desiredName),
new XElement("latitude", latitude),
new XElement("longitude", longitude));
tagRegistry.Add(newTag);
using (var storage = IsolatedStorageFile.GetUserStoreForApplication())
{
using (Stream stream = storage.CreateFile("/tagRegistry.xml"))
{
tagRegistry.Save(stream);
}
}
}
else
{
XDocument tagRegistry = new XDocument(new XElement("SmartSafe"));
tagRegistry.Element("SmartSafe").Add(new XElement("Tag",
new XElement("tag", stringUid),
new XElement("name", desiredName),
new XElement("latitude", latitude),
new XElement("longitude", longitude)));
using (var storage = IsolatedStorageFile.GetUserStoreForApplication())
{
using (Stream stream = storage.CreateFile("/tagRegistry.xml"))
{
tagRegistry.Save(stream);
}
}
}
}
試試這個:
public void saveTag()
{
using (var storage = IsolatedStorageFile.GetUserStoreForApplication())
{
XDocument document;
XElement tagRegistry = null;
if (storage.FileExists("/tagRegistry.xml"))
{
using(var stream = storage.OpenFile("/tagRegistry.xml", FileMode.Open))
{
document = XDocument.Load(stream);
}
tagRegistry = document.Descendants("SmartSafe").FirstOrDefault();
}
else
{
document = new XDocument();
}
if(tagRegistry == null)
{
tagRegistry = new XElement("SmartSafe");
document.Add(tagRegistry);
}
XElement newTag = new XElement("Tag",
new XElement("tag", stringUid),
new XElement("name", desiredName),
new XElement("latitude", latitude),
new XElement("longitude", longitude));
tagRegistry.Add(newTag);
using (Stream stream = storage.CreateFile("/tagRegistry.xml"))
{
document.Save(stream);
}
}
}
您的File.Exists
調用可能是錯誤的。 您將文件存儲到獨立存儲,但從當前運行的目錄中讀取。 所以你總是陷入else
塊並每次都寫入一個新文件。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.