|
#1
|
||||
|
||||
Парсинг xml
Всем привет. Ребят помогите пожалуйста, не могу получить данные из xml, смотрел кучу примеров, не могу разобраться. Что не так?
Код:
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, xmldom, XMLIntf, StdCtrls, Menus, msxmldom, XMLDoc; type TForm1 = class(TForm) MainMenu1: TMainMenu; XMLDocument1: TXMLDocument; N1: TMenuItem; N2: TMenuItem; N3: TMenuItem; N4: TMenuItem; N5: TMenuItem; N6: TMenuItem; SaveDialog1: TSaveDialog; Memo1: TMemo; procedure FormCreate(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.FormCreate(Sender: TObject); var xml: TXMLDocument; i: Integer; dt: string; begin xml := TXMLDocument.Create(nil); xml.LoadFromFile('http://rp5.ru/xml/1508/00000/ru'); xml.Active := True; for i := 0 to xml.DocumentElement.ChildNodes.Count - 1 do begin dt := xml.DocumentElement.ChildNodes[i].ChildNodes['datetime'].Text; Memo1.Lines.Add(dt); end; xml.Active := False; end; end. |
#2
|
|||
|
|||
Попробуй так:
Код:
procedure TForm1.FormCreate(Sender: TObject); var xml: IXMLDocument; i: Integer; dt: string; begin xml := TXMLDocument.Create(nil); xml.LoadFromFile('http://rp5.ru/xml/1508/00000/ru'); xml.Active := True; for i := 0 to xml.DocumentElement.ChildNodes.Count - 1 do begin dt := xml.DocumentElement.ChildNodes[i].ChildNodes['datetime'].Text; Memo1.Lines.Add(dt); end; xml.Active := False; xml := Nil; end; Там проблема, когда TXMLDocument не лежит на форме. Почему-то компонент считает, что ссылок больше нет и тихо умирает... |
Этот пользователь сказал Спасибо lmikle за это полезное сообщение: | ||
Algplux (24.07.2013)
|
#3
|
||||
|
||||
Спасибо большое, эта проблема решилась, но теперь он выводит пустую строку вместо содержимого узла, буду искать ошибку.
|