Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Code for reading an XML file into a DataTable

Tags:

c#

xml

datatable

I have written the following piece of code that reads through a given xml-file and writes the contents into a data-table. Please do NOT suggest to use LinqToXml as that option is ruled because this is a legacy application.

            // create the DataTable that will hold the data
            DataTable table = new DataTable("ListOfPersonsWithInfo");


            // open the file using a Stream
            using (Stream stream = new FileStream(fileNameWithAbsolutePath, FileMode.Open, FileAccess.Read))
            {
                // create the table with the appropriate column names
                table.Columns.Add("Name", typeof(String));
                table.Columns.Add("ImagePath", typeof(String));
                table.Columns.Add("Address", typeof(String));

                // use ReadXml to read the XML stream
                table.ReadXml(stream);

                // tried with this overload-option as well but didnt help
                //table.ReadXml(fileNameWithAbsolutePath);

                // return the results
                return table;
            }

BUT the returned-table contains ZERO rows...!!! where as the actual xml file has '3 rows' and is structured as follows (ANY IDEA what is going wrong here?):

<?xml version="1.0" encoding="utf-8"?>
<Details>
    <EachPerson>
        <Name>Jack</Name>
        <ImagePathAndFileName>C:\Users\Public\Pictures\Sample Pictures\Desert.jpg</ImagePathAndFileName>
        <Address>NewYork</Address>
    </EachPerson>
    <EachPerson>
        <Name>Tom</Name>
        <ImagePathAndFileName>C:\Users\Public\Pictures\Sample Pictures\Desert.jpg</ImagePathAndFileName>
        <Address>London</Address>
    </EachPerson>
    <EachPerson>
        <Name>Jill</Name>
        <ImagePathAndFileName>C:\Users\Public\Pictures\Sample Pictures\Desert.jpg</ImagePathAndFileName>
        <Address>Tokyo</Address>
    </EachPerson>
</Details>
like image 367
MukeshAnAlsoRan Avatar asked Dec 22 '22 00:12

MukeshAnAlsoRan


1 Answers

You can use ReadXML

        DataSet ds = new DataSet();
        ds.ReadXml(fileNameWithAbsolutePath);
        return ds.Tables[0];
like image 91
PraveenVenu Avatar answered Jan 03 '23 05:01

PraveenVenu