2009-09-07 157 views
2

這是我能夠做到的事情,但我很好奇聽到人們關於最佳方式的想法。我在http://www.someplace.com/file上有一個坐在網上的XML文件,我正在編寫一個Web服務,它將獲取該數據並將其轉換爲DataTable對象,然後返回該數據表。我們正在使用c#3.5。你認爲解決這個問題的最好方法是什麼?將XML轉換爲DataTable

回答

4

簡單的XML文件下載到本地磁盤,然後創建數據表,並在其上調用DataTable.ReadXml(filename) .....還是我失去了一些東西....

的DataTable.ReadXml甚至支持流 - 所以你可以直接將它掛接到你的WebResponse流,從該URL下載XML。

(這是未經測試,從內存中 - 但應該給你一個想法如何處理這個):

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

我不想要IO成本,是我唯一的選擇,可以循環訪問內存中的XML文檔,並將其手動添加到數據表中? – cerhart 2009-09-07 14:00:06

+0

對不起,懶讀書。我可以使用網絡請求流。聽起來很棒! – cerhart 2009-09-07 14:01:51

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

你可以分析你的XML數據集,並得到它的數據表:

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

實際上,XML位於我的域之外,所以我必須將其保存到磁盤,然後加載它。我希望避免那裏的IO成本。 – cerhart 2009-09-07 13:56:57