2015-02-05 77 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