2009-09-07 4 views
2

Это то, что я смогу сделать, но мне любопытно услышать идеи людей о том, как это сделать. У меня есть файл XML, сидящий в Интернете по адресу http://www.someplace.com/file, и я пишу веб-службу, которая будет принимать эти данные и преобразовывать их в объект DataTable, а затем возвращать данные. Мы используем C# 3.5. Как вы считаете, лучший способ справиться с этим?Преобразование XML в DataTable

ответ

4

Просто загрузите файл XML на локальном диске, а затем создать DataTable, и вызвать DataTable.ReadXml(filename) на нем ..... или я что-то не хватает ....

DataTable.ReadXml даже поддерживает stream - чтобы вы могли подключить его непосредственно к потоку WebResponse, загрузив XML с этого URL-адреса.

(это проверялось, из памяти - но должно дать вам представление о том, как подойти к этому):

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 
{ } 

Марк

+0

Я не хочу, чтобы стоимость ввода-вывода была моей единственной возможностью для циклического преобразования и документа XML в память и вручную добавить его в таблицу данных ? – cerhart

+0

Извините, ленивый чтения. Я могу использовать поток веб-запросов. Звучит здорово! – cerhart

0

Вы можете разобрать ваш XML в DataSet и получить его DataTable :

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

Собственно, XML находится за пределами моего домена, поэтому мне нужно будет сохранить его на диск, а затем загрузить. Я надеялся избежать расходов на ВЗ. – cerhart

Смежные вопросы