1. Получи 30.000 рублей. Для получения денег необходимо принять участие в конкурсе авторов codeby. С условиями и призами можно ознакомиться на этой странице ...

    Внимание! Регистрация авторов на конкурс закрыта.

    Скрыть объявление
  2. Требуются разработчики и тестеры для проекта codebyOS. Требования для участия в проекте: Знание принципов работы ОС на базе Linux; Знание Bash; Крайне желательное знание CPP, Python, Lua; Навыки системного администрирования. Подробнее ...

    Скрыть объявление

Чтение Xml

Тема в разделе "Вопросы новичков и не только", создана пользователем Gudzik11, 30 ноя 2011.

  1. Gudzik11

    Gudzik11 New Member

    Репутация:
    0
    Регистрация:
    30 ноя 2011
    Сообщения:
    1
    Симпатии:
    0
    Здравствуйте! Облазил весь интернет но так и не нашёл понятного для меня метода . Пожалуйста помогите вывести в Label3 значение
    <cloud> но не из категории <day date="2011-11-29" hour="15">
    а к примеру <day date="2011-11-29" hour="21">

    Код:
    unit Unit1;
    
    interface
    
    uses
    Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
    Dialogs, StdCtrls, xmldom, XMLIntf, msxmldom, XMLDoc, IdBaseComponent,
    IdComponent, IdTCPConnection, IdTCPClient, IdHTTP;
    
    type
    TForm1 = class(TForm)
    Memo1: TMemo;
    Memo2: TMemo;
    Memo4: TMemo;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    XMLDocument1: TXMLDocument;
    IdHTTP1: TIdHTTP;
    procedure Pogoda(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    private
    { Private declarations }
    public
    { Public declarations }
    end;
    
    var
    Form1: TForm1;
    s : string;
    
    implementation
    
    {$R *.dfm}
    function Replace(Str, X, Y: string): string;
    {Str - строка, в которой будет производиться замена.
    X - подстрока, которая должна быть заменена.
    Y - подстрока, на которую будет произведена заменена}
    
    var
    buf1, buf2, buffer: string;
    
    
    begin
    buf1 := '';
    buf2 := Str;
    Buffer := Str;
    
    while Pos(X, buf2) > 0 do
    begin
    buf2 := Copy(buf2, Pos(X, buf2), (Length(buf2) - Pos(X, buf2)) + 1);
    buf1 := Copy(Buffer, 1, Length(Buffer) - Length(buf2)) + Y;
    Delete(buf2, Pos(X, buf2), Length(X));
    Buffer := buf1 + buf2;
    end;
    
    Replace := Buffer;
    end;
    
    procedure TForm1.Pogoda(Sender: TObject);
    begin
    
    {Вызвать процедуру
    Pogoda(NIL);}
    {Скачиваем XML}
    GetDir(0,s);
    memo2.Text:=Utf8ToAnsi(IdHTTP1.Get('http://xml.weather.co.ua/1.2/forecast/19?dayf=5&userid=yoursite_com'));
    Memo2.Text:=Memo1.Text + Memo2.Text;
    Memo2.Text:=Replace(Memo2.Text,'<?xml version="1.0" encoding="UTF-8"?>','');
    Memo2.Lines.SaveToFile(s+'\1.xml');
    {открываем XML}
    XMLDocument1.FileName:='1.xml';
    XMLDocument1.Active := true;
    Memo4.Text:=XMLDocument1.xml.Text;
    Label1.CAPTION :='погода в ' + XMLDocument1.DocumentElement.ChildNodes['city'].ChildNodes['name'].Text + 'е';
    Label2.CAPTION := XMLDocument1.DocumentElement.ChildNodes['current'].ChildNodes['t'].Text+' °С';
    Label3.CAPTION := XMLDocument1.DocumentElement.ChildNodes['forecast'].ChildNodes['day'].ChildNodes['cloud'].Text+' °С';
    
    
    
    XMLDocument1.Active := false;
    
    
    end;
    
    procedure TForm1.FormCreate(Sender: TObject);
    begin
    Pogoda(NIL);
    end;
    
    end.
    Сам XML
    http://xml.weather.co.ua/1.2/forecast/19?d...id=yoursite_com
     

    Вложения:

Загрузка...

Поделиться этой страницей