Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Для новичков > Не выходит получить из xml файла содержимое <item>


Автор: WhaleMav 4.3.2011, 20:03
Приветствую.
Допустим есть иерархия 
Код

<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;



Автор: dvamaster 10.3.2011, 06:53
Код

XMLDoc.DocumentElement.ChildNodes.First.ChildNodes.FindNode('item');


попробуй заменить на

Код

XMLDoc.ChildNodes.First.ChildNodes.FindNode('item');


работает в XE и 2006

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)