Working with an Embedded XML File

  • Thread starter Thread starter Jay Douglas
  • Start date Start date
J

Jay Douglas

Hello all,
I have a basic XML file of which I set the Build Action to "Embedded
Resource" The XML file is simple:

<root>
<item>
<name>Test Name</name>
<description>Test Description</description>
</item>
</root>

I'm having a heck of a time reading the xml file embedded in the assembly.
I'm more than certain that I'm missing some sort of name space element in
the XML.. I've searched high and low and I am unable to find any sample
code that works. I get errors such as invalid object, etc.

I was hoping that somebody might be able to refer me to a url that explains
how to create the xml file correctly and the code to read the embedded xml
file.

C# and vb.net examples are welcome.

Thanks in advance.

Jay
 
If you've compiled the XML file as an embedded resource then you can do
something like this:


using System;
using System.IO;
using System.Reflection;
using System.Xml;

class Application
{
static void Main(string[] args) {

Stream s =
Assembly.GetExecutingAssembly().GetManifestResourceStream("CSharpConsole.XML
File1.xml");

XmlDocument xdoc = new XmlDocument();

StreamReader reader = new StreamReader(s);

xdoc.LoadXml(reader.ReadToEnd());

reader.Close();

}
}

or:

Imports System.Xml
Imports System.Reflection
Imports System.IO

Module Main

Sub Main()

Dim s As Stream =
Assembly.GetExecutingAssembly().GetManifestResourceStream("XMLFile1.xml")

Dim xdoc As New XmlDocument

Dim reader As New StreamReader(s)

xdoc.LoadXml(reader.ReadToEnd())

reader.Close()

End Sub

End Module

Notice in C# you have to prepend the project name (this is not a namespace)
to the file name. IIRC this is due to the way the VB compiler stores
resources in the assembly.
 
Perfect.

Thanks a ton.


Klaus H. Probst said:
If you've compiled the XML file as an embedded resource then you can do
something like this:


using System;
using System.IO;
using System.Reflection;
using System.Xml;

class Application
{
static void Main(string[] args) {

Stream s =
Assembly.GetExecutingAssembly().GetManifestResourceStream("CSharpConsole.XML
File1.xml");

XmlDocument xdoc = new XmlDocument();

StreamReader reader = new StreamReader(s);

xdoc.LoadXml(reader.ReadToEnd());

reader.Close();

}
}

or:

Imports System.Xml
Imports System.Reflection
Imports System.IO

Module Main

Sub Main()

Dim s As Stream =
Assembly.GetExecutingAssembly().GetManifestResourceStream("XMLFile1.xml")

Dim xdoc As New XmlDocument

Dim reader As New StreamReader(s)

xdoc.LoadXml(reader.ReadToEnd())

reader.Close()

End Sub

End Module

Notice in C# you have to prepend the project name (this is not a namespace)
to the file name. IIRC this is due to the way the VB compiler stores
resources in the assembly.

--
Klaus H. Probst, MVP
http://www.vbbox.com/


Jay Douglas said:
Hello all,
I have a basic XML file of which I set the Build Action to "Embedded
Resource" The XML file is simple:

<root>
<item>
<name>Test Name</name>
<description>Test Description</description>
</item>
</root>

I'm having a heck of a time reading the xml file embedded in the assembly.
I'm more than certain that I'm missing some sort of name space element in
the XML.. I've searched high and low and I am unable to find any sample
code that works. I get errors such as invalid object, etc.

I was hoping that somebody might be able to refer me to a url that explains
how to create the xml file correctly and the code to read the embedded xml
file.

C# and vb.net examples are welcome.

Thanks in advance.

Jay
 
Back
Top