Matt Dell
Matt Dell

Reputation: 9531

C# XMLDocument to DataTable?

I assume I have to do this via a DataSet, but it doesn't like my syntax.

I have an XMLDocument called "XmlDocument xmlAPDP".

I want it in a DataTable called "DataTable dtAPDP".

I also have a DataSet called "DataSet dsAPDP".

-

if I do DataSet dsAPDP.ReadXML(xmlAPDP) it doesn't like that because ReadXML wants a string, I assume a filename?

Upvotes: 14

Views: 55408

Answers (3)

Bob Yenser
Bob Yenser

Reputation: 31

ASP.net example:

private DataTable GetReportDataTable()
{
    //get mapped path to xml document
    string xmlDocString = Server.MapPath("CustomReports.xml");

    //read into dataset
    DataSet dataSet = new DataSet();
    dataSet.ReadXml(xmlDocString);

    //return single table inside of dataset
    return dataSet.Tables[0];
}

Upvotes: 3

Matthew Flaschen
Matthew Flaschen

Reputation: 284786

No hacks required:

xmlAPDP = new XmlDocument()
...
xmlReader = new XmlNodeReader(xmlAPDP)
dataSet = new DataSet()
...
dataSet.ReadXml(xmlReader)

XmlDocument is an XmlNode, and XmlNodeReader is a XmlReader, which ReadXml accepts.

Upvotes: 35

Kon
Kon

Reputation: 27441

How about something like this?

dsAPDP.ReadXml(new MemoryStream(ASCIIEncoding.ASCII.GetBytes(xmlAPDP.OuterXml)))

Upvotes: 2

Related Questions