簡體   English   中英

為什么不保存我的XML文件,即使程序在下次啟動時看到更新的值?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM