Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 04.10.2010, 08:15   #1
Homjak
Новичок
Джуниор
 
Регистрация: 06.02.2010
Сообщений: 1
По умолчанию Парсер Gismeteo(xml)

Сабж. Нужна помощь.

Вот пример странички: 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)
Homjak вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Прога парсер Unycom Фриланс 10 26.09.2010 18:11
Универсальный парсер gamer123 Общие вопросы Delphi 20 10.08.2010 09:23
Парсер Ronin333 Общие вопросы C/C++ 3 15.04.2010 14:00
парсер XML, не видит XML тэги supercelt PHP 3 02.11.2009 19:18
Парсер ПС на Delphi dotsik Помощь студентам 0 06.06.2009 15:12