2015-02-05 81 views
0

在VS2013 VB.NET WinForms項目中,我需要在部署的應用程序中包含一個XML文件,該文件將在運行時讀取和寫入。在VB.NET項目中嵌入和引用XML文件

我將該文件作爲嵌入式資源,並將「始終複製」選爲輸出。文件名是「Settings.xml」,資源名稱是「設置」。

看着this的例子,我做了以下引用它在我的代碼:

Private xmlFile as XmlDocument ' In the general declaration area, before the Load event 
xmlFile.LoadXml(My.Resources.Settings) ' In the Load event, in a Try/Catch 

但我得到一個「對象引用不設置到對象的實例」在第二行。

在我打算用這樣的訪問XML代碼:

Dim xmlDoc as New XmlDocument 
xmlDoc = xmlFile 

我還沒有確定如何,保存我所做的任何更改爲類似xmlDoc.Save(xmlFile)最初嘗試沒有成功。

我錯過了什麼?

+0

你確實知道你加載它是一次性命題。你不能保存回已編譯的資源,那麼你可以在其他地方創建文件,以 – Plutonix 2015-02-05 15:48:25

+0

開頭我很好奇爲什麼'My.Settings'不夠?如果你有充分的理由重新發明輪子,爲什麼把它當作一個XML文件而不是'XMLSerialization'呢? – Plutonix 2015-02-05 17:51:47

回答

0

首先,你需要使用的構造xmlFile

Private xmlFile As New XmlDocument 

然後,所有你需要做的是使用資源的名稱,即「將Settings.xml」如果資源嵌入:

xmlFile.LoadXml("Settings.xml") 

你甚至不需要將資源設置爲「CopyAlways」。

+0

謝謝,roryap,但我試過並得到了同樣的錯誤(對象引用...)。 – marky 2015-02-05 15:50:58

+0

@marky - 請注意我對構造函數的看法。 – 2015-02-05 15:58:02

+0

好的,我看到你在那裏有「新」,所以我補充說,但現在我得到這個錯誤:「根層的數據是無效的,行1,位置1。如果這是指我的XML文件的第一行,它開始與一個標準的doctype聲明:'<?xml version =「1.0」encoding =「utf-8」?>' – marky 2015-02-05 16:03:46