如何将XML加载到DataTable中?

时间:2011-01-10 14:42:06

标签: c# xml datatable

我想将互联网上的XML文件加载到C#中的DataTable。 XML从http://rates.fxcm.com/RatesXML加载,如下所示:

<?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代理集。我可以在我的应用程序中的某个位置设置吗?

2 个答案:

答案 0 :(得分:3)

是的,如果XML是单表格式,则可以使用ReadXml。

它可能不会以您期望的格式出现,因此您可能需要稍微探索数据集的结构,但它可以正常工作。

作为将数据从XML文件加载到Datatable时的一般规则,我首先将其读入DataSet,并确保它不会创建多个表。 XML中的任何嵌套通常会导致DataSet中有多个表。

然而,这个特定的文件看起来好像会导入到单个表中。

答案 1 :(得分:1)

这是一个与原文不同的问题,所以要回答修改过的问题......

.NET通常使用您系统的设置。我相信您的默认网络代理设置是在Internet Explorer中配置的。换句话说,如果你在IE中设置它,那么Windows通常会使用这些设置。

我尝试在Internet Explorer中设置代理,看看您的应用是否可以通过您的应用访问它。

我确实在这里找到了另一种可能性: http://www.musicalnerdery.com/net-programming/reading-an-xml-document-from-behind-a-proxy.html