Reading xml file from a resource - c#

I am trying to load an xml file that is stored as a resource in my C# project so I can perform various LINQ queries. However at runtime an "Illegal characters in path" exception is thrown. This is how I am loading the file:
XDocument doc = XDocument.Load(MyProject.Properties.Resources.XMLFile);

Wouldn't XMLFile here actually return the xml itself? If so:
XDocument doc = XDocument.Parse(MyProject.Properties.Resources.XMLFile);

Related

C# code throws an exception ("System.Private.Xml: Root element is missing") when loading XML file in Linux

As the title says, I have a problem loading an XML file with XMLDocument.Load() where that will error in Linux with "Root element is missing" but in Windows it will load perfectly fine.
I have a root element in my XML as needed.
Below is the XML file and code snippet which loads the XML:
XML (Message.xml):
<sms>
<tag1></tag1>
<tag2></tag2>
.
.
.
</sms>
Code snippet:
XMLDocument msg = new XMLDocument();
msg.Load(path + #"/Message.xml") //I have tried to add an "#" and to remove it - no change
//Exception is thrown
I am using Path.Combine() to create the path string needed.

C# Load XML file and escape characters during runtime

I'm trying to load a remote XML file using C# but there are unescaped characters (e.g. '\', '&') that are preventing the file from being loaded by my program since I keep getting the error
"An error occurred while parsing EntityName"
Ideally I want to load the XML file and replace these characters during runtime so that the file is read properly.
String URLString = "REMOTE XML FILE PATH";
XmlTextReader reader = new XmlTextReader(URLString);
XmlDocument xmlDoc = new XmlDocument();
// This is where the error is occurring
xmlDoc.Load(URLString);
Any help would be greatly appreciated!

load xml file into memory

I need to load a xml file in memory so I can access it several times from different forms.
The xml is in this format:
<Slides>
<Slide>
<Name>Name 1</Name>
<Value>Value 1</Value>
<Type>Type 1</Type>
</Slide>
<Slide>
<Name>Name 2</Name>
<Value>Value 2</Value>
<Type>Type 2</Type>
</Slide>
</Slides>
I don't want to use a database to store the vars. Is there any other method to store the data in memory?
Right now I'm using a txt file for each slide and streamreader, which I'm sure is not the best option.
EDIT:
I added this code, but will I be able to get the slides every time without reading the xml file again?
var slides = from s in XElement.Load("slides.xml").Elements("Slide")
select s;
foreach (var slide in slides)
{
//code
}
You should use the XDocument Load method: http://msdn.microsoft.com/en-us/library/bb343181.aspx
i think it is better to use XDocument than the XmlDocument... but it depends on your requirements...
The XDocument is more memory optimized than the XmlDocument, and i think they both are easy for use (for getting values from the xml)
See the XmlDocument class. The Load() method does what you want.
First you have to save the xml file in your project file or your hard disk.Then only you can load the xml file in code behind.
You can create xml file dynamically.it will be much better.
using System.Xml;
XmlDocument myxml = new XmlDocument();
myxml.Load("D:/sample.xml");//Load you xml file from you disk what you want to load
string element_1 = myxml.GetElementsByTagName("Name")[0].InnerText;
string element_2 = myxml.GetElementsByTagName("Value")[0].InnerText;
string element_3 = myxml.GetElementsByTagName("Value")[0].InnerText;
string element_4 = myxml.GetElementsByTagName("Name")[1].InnerText;
string element_5 = myxml.GetElementsByTagName("Value")[1].InnerText;
string element_6 = myxml.GetElementsByTagName("Value")[1].InnerText;
Try this program it will help you.

How to Verify using C# if a XML file is broken

Is there anything built in to determine if an XML file is valid. One way would be to read the entire content and verify if the string represents valid XML content. Even then, how to determine if string contains valid XML data.
Create an XmlReader around a StringReader with the XML and read through the reader:
using (var reader = XmlReader.Create(something))
while(reader.Read())
;
If you don't get any exceptions, the XML is well-formed.
Unlike XDocument or XmlDocument, this will not hold an entire DOM tree in memory, so it will run quickly even on extremely large XML files.
You can try to load the XML into XML document and catch the exception.
Here is the sample code:
var doc = new XmlDocument();
try {
doc.LoadXml(content);
} catch (XmlException e) {
// put code here that should be executed when the XML is not valid.
}
Hope it helps.
Have a look at this question:
How to check for valid xml in string input before calling .LoadXml()

How to create the XDocument instance for loading the XML file after deserializing the the object?

I am developing window phone 7 application. I am new to the window phone 7 application. I am referring to the following link for XML Serialization & Deserialization.
http://www.codeproject.com/KB/windows-phone-7/wp7rssreader.aspx
In the above link the LoadFromIso() function is used for XML Deserialization. I want to load the xml file after deserialization in the above link. In simple one case we can do this as in the following code. Similar to the following code I want "doc" in the above link. In the following code we can perform the various opeations on the XML file by using LINQ to XML with following statement
doc = XDocument.Load(isfStream);
The complete code is as follows
IsolatedStorageFile isfData = IsolatedStorageFile.GetUserStoreForApplication();
XDocument doc = null;
IsolatedStorageFileStream isfStream = null;
if (isfData.FileExists(strXMLFile))
{
isfStream = new IsolatedStorageFileStream(strXMLFile, FileMode.Open, isfData);
doc = XDocument.Load(isfStream);
isfStream.Close();
}
In the similar way I want the instance of the XDocument after deserializing the object so that I can perform the various operations on the XML file by using LINQ to XML. Can you please provide me any code or link through which I can obtain the instance of the XDocument so that I can load the XML file & perform the various operation on the XML file by using the LINQ to XML ?
The variable doc in your code is an XDocument of the deserialized content.
You can perform your operations on/with doc.
A simple WP7 project demonstrating loading XML using XDocument and LINQ and data binding to a listbox here. As Matt advises the work gets done on your XDocument instance.
binding a Linq datasource to a listbox

Categories

Resources