Сабж. Нужна помощь.
Вот пример странички:
http://informer.gismeteo.ru/xml/35394_1.xml.
Нужно "вытащить куски инфы".
Например:
Из каждого FORECAST Температуру и т.д.
+Атрибуты FORECAST.
Но что то не получается, в xml новичек.
Для такого куска xml:
Код:
<FORECAST day="03" month="10" year="2010" hour="18" tod="2" predict="0" weekday="1">
<PHENOMENA cloudiness="1" precipitation="10" rpower="0" spower="0"/>
<PRESSURE max="714" min="712"/>
<TEMPERATURE max="22" min="20"/>
<WIND min="2" max="4" direction="7"/>
<RELWET max="40" min="38"/>
<HEAT min="18" max="20"/>
</FORECAST>
Делал так:
Код:
XMLDocument1.LoadFromFile('H:\35394_1.xml'); //H:\35394_1.xml
XMLDocument1.Active := true;
Edit2.Text := VarToStr(XMLDocument1.DocumentElement.ChildNodes['TEMPERATURE'].Attributes['min']);
Edit3.Text := VarToStr(XMLDocument1.DocumentElement.ChildNodes['TEMPERATURE'].Attributes['max']);
Edit4.Text := VarToStr(XMLDocument1.DocumentElement.ChildNodes['PHENOMENA'].Attributes['cloudiness']);
XMLDocument1.Active := false;
Но атрибуты FORECAST(day="03" month="10" year="2010" hour="18") как вытащить не знаю...
-------------------------------------------------------------------------
Собсно попробовал через сторонний модуль, получилось почти все:
Код:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ECXMLParser, xmldom, XMLIntf, msxmldom, XMLDoc, OleServer, MSXML2_TLB,
XMLVisualizer, UseXML;
type
TForm1 = class(TForm)
Button1: TButton;
XMLDocument1: TXMLDocument;
Edit1: TEdit;
Edit2: TEdit;
Edit3: TEdit;
Edit4: TEdit;
Memo1: TMemo;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
var
i,y: integer;
URL,str:string;
begin
Memo1.Clear;
CreateXML;
URL:='http://informer.gismeteo.ru/xml/35394_1.xml';
LoadXML(URL);
memo1.Lines.Add('');
LoadXML(URL);
memo1.Lines.Add('Город = '+GetNodeItemText(['//TOWN'],'index'));
memo1.Lines.Add('Город = '+GetNodeItemText(['//TOWN'],'sname'));
memo1.Lines.Add('День = '+GetNodeItemText(['//FORECAST'],'day'));
memo1.Lines.Add('Месяц = '+GetNodeItemText(['//FORECAST'],'month'));
memo1.Lines.Add('Год = '+GetNodeItemText(['//FORECAST'],'year'));
memo1.Lines.Add('Часы = '+GetNodeItemText(['//FORECAST'],'hour'));
memo1.Lines.Add('Т макс = '+GetNodeItemText(['//MMWEATHER','//REPORT','//TOWN','//FORECAST','//TEMPERATURE'],'max'));
str:= GetNodeItemTextFromID(['//MMWEATHER','//REPORT','//TOWN'],1,'day');
memo1.Lines.Add('День - '+str);
str:= GetNodeItemTextFromID(['//MMWEATHER','//REPORT','//TOWN'],1,'month');
memo1.Lines.Add('Месяц - '+str);
// memo1.Lines.Add('Max - '+GetNodeTextByNameFromID(['//MMWEATHER','//REPORT','//TOWN','//FORECAST'],'max',1)); // тут надо вывести макс. температуру 2-го Forecast'a
memo1.Lines.Add('');
end;
end.
Смог вытащить все, кроме например 2-го дня температуры и т.д.
Прикрепил модуль usexml. ( прикрепить что то не получилось, залил:
http://depositfiles.com/files/urv9senk9)