How to load an XML file from a file in the solution, build with Embedded Resource?

10,792

Solution 1

Use GetManifestResourceStream():

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

The exact names used to reference resources can be found by calling GetManifestResourceNames().

Solution 2

Reference the resource property directly and use Parse instead of load:

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

The namespace will be somewhat different depending on your project structure.

Solution 3

You should get stream from assembly:

Assembly.GetExecutingAssembly().GetManifestResourceStream(name)

Where name will be something like: 'LinqToXml.Champions.xml'

Share:
10,792
Only Bolivian Here
Author by

Only Bolivian Here

Updated on June 09, 2022

Comments

  • Only Bolivian Here
    Only Bolivian Here over 1 year

    Here's an outline of my solution:

    enter image description here

    I've set the build to Embedded Resource and when I generate the application the XML file doesn't appear in the /Release folder. This is correct, I want this behavior.

    Now I'm trying to load that file into an XDocument so I can parse the data within:

    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Parsing XML.");
    
            XDocument championXml = XDocument.Load("Champions.xml");
    
            Console.ReadKey();
        }
    }
    

    And I get a file not found error because it's trying to find the xml file in the full path of the release folder.

    How can I properly load this data into my XDocument?

    • jrummell
      jrummell about 12 years
      You need to load the resource, not the file in your project.
    • Only Bolivian Here
      Only Bolivian Here about 12 years
      @jrummell: My project doesn't have any resource file. Can you elaborate?
    • p__d
      p__d over 6 years
      Related and good answear. stackoverflow.com/questions/3314140/…
  • Only Bolivian Here
    Only Bolivian Here about 12 years
    I'm using .NET 3.5, and it seems the XDocument.Load(stream) is only available for .NET 4 and up. I can't use it in my application. How do I use this stream and turn it into xml? msdn.microsoft.com/en-us/library/cc838349%28v=vs.95%29.aspx
  • Only Bolivian Here
    Only Bolivian Here about 12 years
    Found my answer in another question. Thanks! Will mark this as answer. stackoverflow.com/questions/3281714/…