2009-05-07 8 views
12

Je suppose que je dois le faire via un DataSet, mais il n'aime pas ma syntaxe.C# XMLDocument vers DataTable?

J'ai un XMLDocument appelé "XmlDocument xmlAPDP". Je le veux dans un DataTable appelé "DataTable dtAPDP". J'ai également un DataSet appelé "DataSet dsAPDP".

-

si je ne DataSet dsAPDP.ReadXML (xmlAPDP) il n'aime pas parce que ReadXML veut une chaîne, je suppose un nom de fichier?

Répondre

31

Aucun hacks requis:

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

XmlDocument est un XmlNode et XmlNodeReader est un XmlReader qui accepte ReadXml.

+7

Matthew: Ne pas oublier de vous fermer XmlReader, ou une meilleure utilisation "en utilisant": 'l'aide (lecteur XmlReader = new XmlNodeReader (xmlAPDP.documentElement)) { dsAPDP.ReadXml (lecteur); lecteur.Fermer(); } dtAPDP = dsAPDP.tables [0]; ' – omadawn

2

Que diriez-vous de quelque chose comme ceci?

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

exemple ASP.net:

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]; 
}