【问题标题】:How to load an XML file from a file in the solution, build with Embedded Resource?如何从解决方案中的文件加载 XML 文件,使用嵌入式资源构建?
【发布时间】:2011-12-06 20:58:42
【问题描述】:

这是我的解决方案的概要:

我已将构建设置为 Embedded Resource,当我生成应用程序时,XML 文件不会出现在 /Release 文件夹中。这是正确的,我想要这种行为。

现在我正在尝试将该文件加载到 XDocument 中,以便解析其中的数据:

class Program
{
    static void Main(string[] args)
    {
        Console.WriteLine("Parsing XML.");

        XDocument championXml = XDocument.Load("Champions.xml");

        Console.ReadKey();
    }
}

我得到一个文件未找到错误,因为它试图在发布文件夹的完整路径中查找 xml 文件。

如何正确地将这些数据加载到我的 XDocument 中?

【问题讨论】:

  • 您需要加载资源,而不是项目中的文件。
  • @jrummell:我的项目没有任何资源文件。你能详细说明一下吗?

标签: c# .net xml linq-to-xml


【解决方案1】:

直接引用资源属性,使用 Parse 代替 load:

XDocument championXml = XDocument.Parse(Properties.Resources.ChampionsXML);
                                                             ^^^^^^^^^^^^
                                           //Name of your resource |

命名空间会有所不同,具体取决于您的项目结构。

【讨论】:

    【解决方案2】:

    使用GetManifestResourceStream()

    var asm = Assembly.GetExecutingAssembly();
    using(var stream = asm.GetManifestResourceStream("Namespace.Champions.xml"))
    {
        // ...
    }
    

    可以通过调用GetManifestResourceNames()找到用于引用资源的确切名称。

    【讨论】:

    【解决方案3】:

    您应该从程序集中获取流:

    Assembly.GetExecutingAssembly().GetManifestResourceStream(name)
    

    名称将类似于:'LinqToXml.Champions.xml'

    【讨论】:

      猜你喜欢
      • 2018-10-21
      • 2011-08-01
      • 1970-01-01
      • 2011-01-21
      • 2015-08-12
      • 1970-01-01
      • 2012-12-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多