Библиотеки для работы с интернетом - C#
Формулировка задачи:
подскажите какой литературой пользоваться чтобы научиться работать с информацией, получаемой из интернета? или хотя бы какими библиотеками?
тестовое задание: есть игра EVE online, в ней есть рынок. информацию о стоимости каких либо товаров (на продажу и на закупку) можно получить из API игры. для этого надо для продукта с кодом X пройти по ссылке http://api.eve-central.com/api/marketstat?typeid="Х"&usesystem=30000142&hours=16 если X=2393, то ссылка выглядит так http://api.eve-central.com/api/marke...00142&hours=16
если открыть в браузере, то будет чисто строка, но если в режиме разработчика посмотреть структуру, то там сидит таблица. как из этой таблицы импортировать данные используя XML? например buy/volume. например скрипт для Экселевского импорта выглядит так:
вот что-то подобное для C# можно увидеть?
Public Function ImportXML(ByVal url As String, ByVal XPath As String) As Variant
On Error GoTo errHandle
Dim pDoc As Object, t As Single, pNode As Object
Set pDoc = CreateObject("MSXML2.DOMDocument")
t = Timer
pDoc.Load url
Do Until (pDoc.readyState = 4) Or ((Timer - t) > 1)
DoEvents
Loop
If pDoc.readyState <> 4 Then ImportXML = CVErr(XlCVError.xlErrRef): Exit Function
Set pNode = pDoc.SelectSingleNode(XPath)
If pNode Is Nothing Then ImportXML = CVErr(XlCVError.xlErrNull): Exit Function
ImportXML = pNode.Text
Exit Function
errHandle:
ImportXML = CVErr(XlCVError.xlErrNA)
End FunctionРешение задачи: «Библиотеки для работы с интернетом»
textual
Листинг программы
using System;
using System.Linq;
using System.Xml.Linq;
class Program
{
static void Main()
{
var url = @"http://api.eve-central.com/api/marketstat?typeid=2393&usesystem=30000142&hours=16";
var doc = XDocument.Load(url);
var data = doc.Element("evec_api") // <evec_api version="2.0" method="marketstat_xml">
.Element("marketstat") // <marketstat>
.Element("type") // <type id="2393">
.Elements() // <buy> | <sell> | <all>
.Select(e => new
{
Type = e.Name,
Volume = (string)e.Element("volume"),
Average = (double)e.Element("avg"),
});
foreach (var row in data) Console.WriteLine(row);
Console.ReadLine();
}
}