Чем и как обработать xml ?

 

Скриптом выдирается некая информация...

В данном случае курс долл\руб с сайта ЦБ РФ.

// скрипт --------------------------------------------
#property show_inputs
#import "wininet.dll"
int InternetAttemptConnect (int x);
int InternetOpenA(string sAgent, int lAccessType, string sProxyName="", string sProxyBypass="", int lFlags=0);
int InternetOpenUrlA(int hInternetSession, string sUrl, string sHeaders="", int lHeadersLength=0, int lFlags=0, int lContext=0);
int InternetReadFile(int hFile, int& sBuffer[], int lNumBytesToRead, int& lNumberOfBytesRead[]);
int InternetCloseHandle(int hInet);
#import

//+------------------------------------------------------------------+
int init(){return(0);}
int deinit(){return(0);}
//+------------------------------------------------------------------+
int start()
{
string D2=DateRev(TimeLocal());
string str = ReadWebPage("http://www.cbr.ru/scripts/XML_dynamic.asp?date_req1="+D2+"&date_req2="+D2+"&VAL_NM_RQ=R01235");

MessageBox(str,D2,0);

return(0);
}
//+------------------------------------------------------------------+
string ReadWebPage(string url)
{ if(!IsDllsAllowed())
{Alert("Необходимо в настройках разрешить использование DLL"); return("");}

int rv = InternetAttemptConnect(0);
if(rv != 0)
{Alert("Ошибка при вызове InternetAttemptConnect()"); return("");}

int hInternetSession = InternetOpenA("Microsoft Internet Explorer", 0, "", "", 0);
if(hInternetSession <= 0)
{Alert("Ошибка при вызове InternetOpenA()"); return("");}

int hURL = InternetOpenUrlA(hInternetSession, url, "", 0, 0, 0);
if(hURL <= 0)
{Alert("Ошибка при вызове InternetOpenUrlA()");
InternetCloseHandle(hInternetSession); return(0);}      

int cBuffer[256];
int dwBytesRead[1]; 
string TXT = "";
while(!IsStopped())
{
for(int i = 0; i<256; i++) cBuffer[i] = 0;
bool bResult = InternetReadFile(hURL, cBuffer, 1024, dwBytesRead);
if(dwBytesRead[0] == 0) break;
string text = "";   
for(i = 0; i < 256; i++)
{
text = text + CharToStr(cBuffer[i] & 0x000000FF);
if(StringLen(text) == dwBytesRead[0]) break;
text = text + CharToStr(cBuffer[i] >> 8 & 0x000000FF);
if(StringLen(text) == dwBytesRead[0]) break;
text = text + CharToStr(cBuffer[i] >> 16 & 0x000000FF);
if(StringLen(text) == dwBytesRead[0]) break;
text = text + CharToStr(cBuffer[i] >> 24 & 0x000000FF);
}
TXT = TXT + text;
Sleep(1);
}
if(TXT == "") Alert("Нет считанных данных");
InternetCloseHandle(hInternetSession);
   
return(TXT);
}
//---------
string DateRev(datetime d)
{
string lzd="", lzm="";
if(TimeDay(d)  <10) lzd="0";
if(TimeMonth(d)<10) lzm="0";
string date=lzd+TimeDay(d)+"."+lzm+TimeMonth(d)+"."+TimeYear(d);
return(date);
}
//---

в ответ на запрос получим нечто подобное:

<?xml version="1.0" encoding="windows-1251" ?>
- <ValCurs ID="R01235" DateRange1="24.12.2008" DateRange2="24.12.2008" name="Foreign Currency Market Dynamic">
- <Record Date="24.12.2008" Id="R01235">
<Nominal>1</Nominal>
<Value>28,3359</Value>
</Record>
</ValCurs>

Из чего интересует лишь 28.3359

т.е сам курс...

*

Доп.инфо: http://www.cbr.ru/scripts/Root.asp?Prtid=SXML

*

Есть возможность получения и списка валуев, например так ...

*

В общем получить некую инфу в формате xml есть,

а вот чем и как обработать средствами мкл4 не знаю...

 
наверно этими функциями https://docs.mql4.com/ru/strings
 

Посмотри Microsoft XML Parser (MSXML) и XSLT. Если потребуется помощь - чиркни в личку.

Можно поизголяться с разбором хтмл