2014-09-21 38 views
1

我試圖尋找這個問題的答案,但沒有找到任何,也許我沒有使用正確的話,但沒有出現。也許是因爲這是不可能的?是否可以在運行時修改並保存程序中的XML文件而不是外部文件?

我想要一個XML文件,將與樹視圖同步,並且會對樹視圖進行更改,這將影響XML文件,然後我需要保存它,但我無法給出用戶直接訪問這個文件,所以我想用程序進行編譯,問題是,是否可以通過這種方式修改和保存XML?

非常感謝!

Ray。

附加信息(或者,最後一個問題):

我能保存在XML文檔中在我的計劃某種程度上這將是今後利用現有 即使我會殺了我的計劃? (而不是作爲 用戶可訪問的XML文件?)什麼是「資源」我知道我可以把一個 XML文件/文件(?)有,但我將能夠修改並保持 變化,我會做它?

+0

你的Q有點不清楚。 '但我不能讓用戶直接訪問這個文件,爲什麼不呢? '我想用程序編譯它如何作爲資源?那麼它實際上就是你的應用程序的一部分,你不能通過你的應用程序本身來改變它。 – Sjips 2014-09-21 20:10:58

+0

我的意思是用戶不應該直接訪問該文件,他/她可以從程序的本地文件夾中複製該文件..好吧,謝謝@Sjips所以有沒有其他方法可以保護文件免受直接攻擊訪問? – Ray 2014-09-21 20:12:14

回答

1

有人總是可能複製文件,特別是當他擁有管理員權限時。如果您不希望用戶通過編輯來篡改文件,則可以考慮加密。或者在XML文件中添加某種校驗和(不是作爲標籤,而是作爲XML註釋,以便解析器可以忽略它,但仍可以讀取它並使用它來檢查文件是否未被破壞)。加密會使文件無法讀取; Checksumming將保持文件的可讀性,但很難在沒有檢測的情況下進行更改。

+0

謝謝,讓我看看它.. – Ray 2014-09-21 20:41:51

+0

此信息對我也很重要。 – Ray 2014-09-22 09:18:02

1

究竟是一個XML文件?我幾乎可以肯定你的意思是一個XML文檔。

你可以保持解析的XML文檔在內存中的對象。然後,您可以隨意修改文檔樹。我不確定「保存」是什麼意思,但確定可以將對象保存爲二進制格式或XML格式。樹不會自動序列化成文件。

我建議讓您的XML作爲在內存中的文件樹,而不是它寫入一個文件,直到你完成修改它。這是否有意義取決於您的應用程序。

什麼是你想要保持一個文件,而你正在修改的樹的原因嗎?也許你正在構建一個XML編輯器?

編輯:還有一個選項:保存XML在數據庫中。你甚至可能有一個XML類型的列,這取決於你擁有哪個數據庫。那麼即使程序崩潰也應該是安全的。

+0

謝謝!你已經解釋了一些我不知道的重要的東西,所以我可以將XML文檔作爲「不作爲文件」,但作爲一個對象,這意味着我永遠不需要將這個文檔寫入文件,它永遠不會用戶可訪問。現在的問題是:如果像你說的那樣,我可以修改文檔並將其保存爲二進制對象,那麼當程序實例死亡時,它可能會作爲設置持續下去,或者它會死亡?我所做的只是創建一個同步到樹視圖的XML文檔,樹視圖也應該具有複選框和對應於XML文檔中每個節點的相應設置。 – Ray 2014-09-21 22:59:52

+0

用戶不會看到XML內容,因爲每個節點有更多的設置,他不應該能夠看到(business-copyrights-wise) – Ray 2014-09-21 23:01:32

+0

更新了這個問題。令我感到驚訝的是,XML不僅是一個文件。顯然,我不知道「文檔」的正確含義,並沒有使用XML之前,它不僅僅是從一個文件讀取.. 但它仍然不回答我的問題,所以我已經更新它以上。 – Ray 2014-09-22 09:04:38

相關問題