2011-01-10 19 views
0

Ich möchte eine XML-Datei im Internet in eine DataTable in C# laden. Die XML wird von http://rates.fxcm.com/RatesXML geladen und sieht wie folgt aus:Wie lade ich XML in eine 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> 

Kann ich die ReadXml method of the DataTable class verwenden, um die XML zu lesen, oder brauche ich eine Art von HTTP-Anforderung, um es zuerst in einen String?

EDIT: Ich habe gerade folgendes geschrieben

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

} 

und es versucht, die Daten zu lesen, aber ich bin hinter einer Unternehmens-Firewall. Ich bin jetzt wirklich ratlos, wie ich das umgehen kann. Ich bekomme diese Fehlermeldung:

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

In firefox ich einen HTTP-Proxy mit einer Portnummer eingestellt haben. Kann ich das irgendwo in meiner App einstellen?

+0

Das Update über ein anderes Problem ist überhaupt, fragen Sie bitte die separat Frage. Um den aktualisierten Teil Ihrer Frage zu beantworten, sollten Sie den Inhalt wahrscheinlich mithilfe eines HttpWebRequest/HttpWebResponse-Paars (oder der WebClient-Klasse) herunterladen und den Proxy entsprechend einstellen. Übergeben Sie dann den Datenstrom an die DataTable/DataSet. – casperOne

+0

@casperOne: Entschuldigung, OK wird es tun. Ich habe es jetzt aber mit aller Hilfe gelöst. Ändere das Q morgen, wenn ich Zeit bekomme. –

+0

@Mark Allison: Wie dieses Problem zu lösen, ich leide auch mit dieser –

Antwort

3

Ja, können Sie ReadXml verwenden, wenn die XML in einem Single-Table-Format ist.

Es kommen kann nicht im Format, das Sie erwarten, so können Sie die Struktur des Datensatzes ein wenig erkunden müssen, aber es funktioniert gut.

Als allgemeine Regel beim Laden von Daten aus einer XML-Datei in eine Datentabelle, ich es in einen Datensatz gelesen habe zuerst und sicherzustellen, dass es nicht schafft mehr als eine Tabelle. Jede Verschachtelung im XML-Format führt normalerweise zu mehreren Tabellen in einem DataSet.

Diese besondere Datei, sieht jedoch, wie es in einer einzigen Tabelle ganz gut importieren würde.

+0

Danke - Ich habe gerade meine Frage bearbeitet (aber mit einem 'DataSet'). –

1

Das ist eine andere Frage als das Original ist, so die geänderte Frage zu beantworten ...

.NET verwendet in der Regel, um die Einstellungen des Systems. Ich glaube, dass Ihre Standard-Netzwerk-Proxy-Einstellungen in Internet Explorer konfiguriert sind. Mit anderen Worten, wenn Sie es in IE festlegen, wird Windows im Allgemeinen diese Einstellungen verwenden.

Ich würde versuchen, den Proxy in Internet Explorer einstellen und sehen, ob Ihre App aus Ihrer App zugreifen können.

ich eine andere Möglichkeit finden hier tat: http://www.musicalnerdery.com/net-programming/reading-an-xml-document-from-behind-a-proxy.html

+0

Meine IE Einstellungen sind die gleichen wie Firefox. Danke für dein Beispiel, versuche es jetzt zum Laufen zu bringen ... –

Verwandte Themen