c#解决方案资源管理器中的XML文件

本文关键字:XML 文件 解决方案 资源管理器 | 更新日期: 2023-09-27 18:05:42

我有一个3D对象和它们的数据点。数据由1000个点组成

以下为数据点。

   public static List<MyLine> OpenProject(string _file)
    {
        List<MyLine> Lines = new List<MyLine>();
        XmlDocument doc = new XmlDocument();
        doc.LoadXml(_file);
        XmlNodeList coordinates = doc.SelectNodes("/Siene/MyLine/Coordinates");
        foreach (XmlNode coordinat in coordinates)
        {
            int x1 = Int32.Parse(coordinat["Start"].Attributes["X"].Value);
            int y1 = Int32.Parse(coordinat["Start"].Attributes["Y"].Value);
            int z1 = Int32.Parse(coordinat["Start"].Attributes["Z"].Value);
            MyLine czg = new MyLine(x1, y1, z1);
            lines.Add(czg);
        }
        return lines;
    }

不是从外部文件(doc.LoadXml(_file))加载,XML文件必须位于解决方案资源管理器中,并且所有数据点必须能够从中读取。

你能告诉我怎么做吗?

问候,马克吐温

c#解决方案资源管理器中的XML文件

在解决方案

  • 将文件添加到您的解决方案中。
  • 右键单击文件,选择"属性"。
  • 更改"Build Action" => "Embedded Resource"

在你的代码

  • 使用Assembly类获取包含嵌入资源的程序集的引用(即Assembly. getexecutingassembly ())
  • 使用assembly ref获取到文件的流(即assemblyRef.GetManifestResourceStream("assemblyName.filename.xml"))
  • XML文档应该能够加载流。

假设我的程序集被称为"Hello"。这个文件被嵌入到项目的根目录,叫做foo.xml,你可以使用下面的代码:

var myAss = Assembly.GetExecutingAssembly();
using (var s = myAss.GetManifestResourceStream(string.Format("{0}.foo.xml", 
                                               myAss.GetName().Name)))
{
    var doc = new XmlDocument();
    doc.Load(s);
}

您可以将该文件作为资源嵌入:

资源文件(Visual Studio)

如何在。net程序集中嵌入资源文件

如何检索嵌入的xml资源?