我想将互联网上的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代理集。我可以在我的应用程序中的某个位置设置吗?
答案 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