[英]Why isn't my XML file being saved, even though the program sees the updated values next time I start it?
我正在讀取XML文件的內容並將其解析為對象模型。
當我修改對象模型中的值時,請使用以下代碼將其保存回xml:
XElement optionXml = _panelElement.Elements("options").FirstOrDefault();
optionXml.SetAttributeValue("arming", value.ToString());
_document.Save(_fileName);
據我所知,這是有效的,因為當我關閉應用程序並重新啟動它時,我保存的值會在下次查看時反映在對象模型中。
但是,當我加載實際的XML文件時,值仍然是最初的。
為什么是這樣? 使用新值保存實際XML文件需要做什么?
您最有可能遇到Windows Vista中引入的文件系統虛擬化 。
基本上這意味着您要保存文件,而不是您認為保存它的位置。 例如,您可能認為您正在保存到C:\\Program Files\\Your App\\yourFile.xml
,但是C:\\Program Files\\Your App\\yourFile.xml
發生的事情是操作系統默默地將其重定向到%APPDATA%\\Your App\\yourFile.xml
。 當你重新加載它時,操作系統再次從該位置靜默重定向。
這是一種安全措施,旨在更好地封裝應用程序及其數據,並防止未經授權的寫入可能發生損壞的位置。 您仍然可以強制保存到%PROGRAMFILES%\\Your App
,但要做到這一點,您需要放寬應用於該文件夾的ACL,或者您需要提升應用程序運行的權限級別。
我不確定是將其作為評論還是答案,但我認為這可能是一個潛在的答案。 這聽起來像是保存XML文件,因為數據是跨應用程序的實例持久化的。 它可能是文件系統虛擬化,如提到的slugster,但它可能很簡單,因為您正在查看XML文件的錯誤副本。 如果您使用的是相對路徑,則該文件可能已被復制到新位置。 我建議你快速搜索一下這個文件名,看看你得到了什么。
事實證明,文件正在被復制到輸出目錄並從中讀取。 我可以看到它正在按預期更新。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.