我有一个ASP.NET项目,希望在项目中包含一个XML文件来存储一些相对静态的数据。为此,我从解决方案上下文菜单中选择了“添加文件”并选择了我的XML文件。将此添加到我的项目后,我想从代码中加载XML。我尝试了以下方法:
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load("MyData.xml");
我也尝试过:
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load("~/MyData.xml");
但它似乎在查看当前目录(即我的VS2008目录)而不是项目。我错了吗?有没有办法简单地引用项目中嵌入的资源?
答案 0 :(得分:0)
当第二次尝试中的波形符'〜'在控件属性(如HyperLink.NavigateUrl)中设置的文件URL的一部分时,会对其进行评估。如果它只是传递给xmlDocument.Load()的字符串的一部分,则必须使用Server.MapPath("~/MyData.xml")
或者,
您可以将该文件包含为嵌入式资源。右键单击解决方案中的文件,然后在“构建操作”中选择“嵌入式资源”。在“复制到输出目录”选项中,选择“不复制”
以下是如何阅读文件的示例:
var assembly = Assembly.GetExecutingAssembly();
if (assembly != null)
{
var stream = assembly.GetManifestResourceStream("RootProjectNamespace.MyData.xml");
if (stream != null)
{
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load(stream);
}
}
注意,您必须在文件名前添加项目的默认命名空间。您可以通过右键单击项目,选择属性来找到它,在“应用程序”选项卡中,“默认”命名空间位于顶部。
答案 1 :(得分:0)
在ASP.NET项目中添加XML文件所遵循的步骤不会嵌入到您的应用程序中,就像应用程序中的另一个文件一样,就像我们的.aspx页面一样。
你可以尝试
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load(Server.MapPath("~/MyData.xml"));
将这些文件保存在 App_Data 文件夹
中会更好