2011-01-10 73 views
0

我想要將Internet上的XML文件加載到C#中的DataTable中。 XML是從http://rates.fxcm.com/RatesXML裝,看起來像這樣:如何將XML加載到DataTable中?

<?xml version="1.0" encoding="UTF-8"?> 
<Rates> 
    <Rate Symbol="EURUSD"> 
     <Bid>1.29174</Bid> 
     <Ask>1.29198</Ask> 
     <High>1.29407</High> 
     <Low>1.28723</Low> 
     <Direction>-1</Direction> 
     <Last>14:56:48</Last> 
    </Rate> 
    <Rate Symbol="USDJPY"> 
     <Bid>82.862</Bid> 
     <Ask>82.885</Ask> 
     <High>83.293</High> 
     <Low>82.847</Low> 
     <Direction>1</Direction> 
     <Last>14:56:47</Last> 
    </Rate> 
    <!-- More like the above --> 
</Rates> 

我可以使用ReadXml method of the DataTable class讀取XML,還是我需要某種形式的HTTP請求,首先把它轉換成字符串?

編輯: 我剛剛寫了下面的

public DataTable GetCurrentFxPrices(string URL) 
{ 
    DataSet ds = new DataSet("fxPrices"); 
    ds.ReadXml(URL); 

} 

,並試圖讀取數據,但我是一個企業防火牆後面。我現在真的無能爲力了。我得到這個錯誤:

System.Net.WebException: The remote server returned an error: (407) Proxy Authentication Required.

在Firefox中我有一個端口號設置HTTP代理。我可以在我的應用程序的某個地方設置嗎?

+0

更新是關於一個完全不同的問題,請分別問這個問題。要回答你的問題的更新部分,你應該使用HttpWebRequest/HttpWebResponse對(或WebClient類)下載內容,並在其上適當地設置代理。然後,將流傳遞給DataTable/DataSet。 – casperOne 2011-01-10 15:41:22

+0

@casperOne:對不起,好的。儘管在大家的幫助下,我現在已經解決了它。當我獲得時間時,明天會改變Q. – 2011-01-10 16:05:46

+0

@Mark Allison:如何解決這個問題,我也遇到了這個問題 – 2012-06-22 11:51:40

回答

3

是的,如果XML是單表格格式,則可以使用ReadXml。

它可能不會以您期望的格式進來,所以您可能需要稍微探索一下數據集的結構,但它工作得很好。

作爲從XML文件加載數據到Datatable中的一般規則,我首先將它讀入DataSet中,並確保它不會創建多個表。任何嵌套在XML中通常都會導致DataSet中有多個表。

但是,這個特殊的文件看起來好像將它導入到一張表中一樣好。

1

也就是說比原來的一個不同的問題,所以回答修改後的問題...

.NET通常使用系統的設置。我相信您的默認網絡代理設置是在Internet Explorer中配置的。換句話說,如果你在IE中設置它,那麼Windows一般會使用這些設置。

我想嘗試在Internet Explorer中設置代理,並查看您的應用是否可以從您的應用訪問它。

我在這裏找到另一種可能性: http://www.musicalnerdery.com/net-programming/reading-an-xml-document-from-behind-a-proxy.html