How to load an XML file from a file in the solution, build with Embedded Resource?
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'
Only Bolivian Here
Updated on June 09, 2022Comments
-
Only Bolivian Here over 1 year
Here's an outline of my solution:
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 about 12 yearsYou need to load the resource, not the file in your project.
-
Only Bolivian Here about 12 years@jrummell: My project doesn't have any resource file. Can you elaborate?
-
p__d over 6 yearsRelated and good answear. stackoverflow.com/questions/3314140/…
-
-
Only Bolivian Here about 12 yearsI'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 about 12 yearsFound my answer in another question. Thanks! Will mark this as answer. stackoverflow.com/questions/3281714/…