Приветствую. Допустим есть иерархия
| Код | <rss> <channel> <item> <title>Титл</title> <wp:post_name>post</wp:post_name> <pubDate>Дата</pubDate> <content:encoded><![CDATA[Текст]]></content:encoded> <wp:post_id>1</wp:post_id> <category><![CDATA[Рубрика]]></category> <category domain="category" nicename="bez-rubriki"><![CDATA[Рубрики]]></category> <wp:post_date>Дата в дром формате</wp:post_date> <wp:post_date_gmt>Третий формат даты)))</wp:post_date_gmt> <wp:status>publish</wp:status> <wp:post_type>post</wp:post_type> </item> <channel> </rss>
|
Код отлично парсит любую строчку находящуюся между <item></item>, НО сделать так, чтоб брались все строки включая тег <item> не выходит. Подскажите, чего не хватает (про мозг знаю..))
| Код | procedure TForm1.BitBtn1Click(Sender: TObject); var ADPLocalFile : TFileName; ADPXMLBLOG:string; StartItemNode : IXMLNode; ANode : IXMLNode; STitle, sDesc, sLink : widestring; begin ADPXMLBLOG:=edit7.text; // адрес файла if (ADPXMLBLOG<>'') and (ADPXMLBLOG[3]='\') then begin ADPLocalFile := IncludeTrailingPathDelimiter(ExtractFilePath(Application.ExeName)) + 'temp.adpheadlines.xml';
Screen.Cursor:=crHourglass; try if not DownloadURLFile(ADPXMLBLOG, ADPLocalFile) then begin Screen.Cursor:=crDefault; Raise Exception.CreateFmt('Unable to connect to the Internet, make sure you are connected!',[]); Exit; end;
if not FileExists(ADPLocalFile) then begin Screen.Cursor:=crDefault; raise exception.Create('Can''t locate the *headlines* file?!'); Exit; end;
lv.Clear;
XMLDoc.FileName := ADPLocalFile; XMLDoc.Active:=True;
StartItemNode:=XMLDoc.DocumentElement.ChildNodes.First.ChildNodes.FindNode('item'); ANode := StartItemNode; repeat STitle := ANode.ChildNodes[edit8.Text].Text; // edit8.Text = например title. Тогда будет записано в STitle содржимое тега <title> sLink := ANode.ChildNodes[edit11.Text].Text;
//add to list view with LV.Items.Add do begin Caption := STitle; SubItems.Add(sLink); end; ANode := ANode.NextSibling; inc(m1); until ANode = nil; memo1.Lines.Add('Спарсили '+inttostr(m1)+' новости'); finally DeleteFile(ADPLocalFile); Screen.Cursor:=crDefault; end; end; end;
|
|