2009-09-07 9 views
2

C'est quelque chose que je serai capable de faire, mais je suis curieux d'entendre les idées des gens sur la meilleure façon de le faire. J'ai un fichier XML assis sur le Web au http://www.someplace.com/file et j'écris un service Web qui va prendre ces données et les convertir en un objet DataTable, puis retourner la datatable. Nous utilisons C# 3.5. Selon vous, quelle est la meilleure façon d'y remédier?Conversion de XML en DataTable

Répondre

4

Il suffit de télécharger le fichier XML sur votre disque local, puis créez la DataTable, et appelez DataTable.ReadXml(filename) là-dessus ..... ou suis-je manque quelque chose ....

Le DataTable.ReadXml soutient même stream - afin que vous puissiez l'accrocher directement à votre flux WebResponse en téléchargeant le XML à partir de cette URL.

(ce qui n'a pas été testé, de la mémoire - mais devrait vous donner une idée comment aborder ce sujet):

DataTable myDataTable = new DataTable(); 

HttpWebRequest myRequest = (HttpWebRequest)WebRequest.Create(new Uri("http://someplace/somefile.xml"); 
myRequest.Method = "GET"; 

WebResponse myResponse; 
try 
{ 
    myResponse = myRequest.GetResponse(); 

    using (Stream responseStream = myResponse.GetResponseStream()) 
    { 
     myDataTable.ReadXml(responseStream); 
    } 
} 
catch 
{ } 

Marc

+0

Je ne veux pas le coût d'E/S, est ma seule option pour boucler et document XML en mémoire et l'ajouter manuellement à la table de données ? – cerhart

+0

Désolé, lecture paresseuse. Je peux utiliser le flux de requête web. Super! – cerhart

2
DataTable dt = new DataTable(); 
dt.ReadXml("c:myxml.xml"); 
0

Vous pouvez analyser votre XML DataSet et l'obtenir est DataTable :

DataSet dataSet = new DataSet(); 
dataSet.ReadXml("input.xml", XmlReadMode.ReadSchema); 
+0

En fait, le XML se trouve en dehors de mon domaine, je devrais donc l'enregistrer sur le disque, puis le charger. J'espérais éviter le coût d'IO là-bas. – cerhart