Consume rss feeds.

Any examples to achieve this please ?

Have a list of feeds in a list box.
Click on one and show the feed in a browser.

Cheers

Steve W

Got this working.

procedure TForm10.WebButton1Click(Sender: TObject);


begin
        WebHttpRequest1.URL := 'https://damng.github.io/hackernews-rss-with-inlined-content/output.rss';
        WebHttpRequest1.Execute();


end;

procedure TForm10.WebHttpRequest1Response(Sender: TObject; AResponse: string);
var
  xmlDoc, title, link, description, pubDate: string;
  itemNodes, titleNodes, linkNodes, descriptionNodes, pubDateNodes: string;
  i: Integer;
begin
  try
    asm
      var parser = new DOMParser();
      var xmlDoc = parser.parseFromString(AResponse, "text/xml");
      var itemNodes = xmlDoc.getElementsByTagName("item");
    end;

    for i := 0 to Integer(itemNodes.length) - 1 do
    begin
      asm
        var titleNodes = itemNodes[i].getElementsByTagName("title");
        var linkNodes = itemNodes[i].getElementsByTagName("link");
        var descriptionNodes = itemNodes[i].getElementsByTagName("description");
        var pubDateNodes = itemNodes[i].getElementsByTagName("pubDate");
        var title = (titleNodes.length > 0) ? titleNodes[0].textContent : "";
        var link = (linkNodes.length > 0) ? linkNodes[0].textContent : "";
        var description = (descriptionNodes.length > 0) ? descriptionNodes[0].textContent : "";
        var pubDate = (pubDateNodes.length > 0) ? pubDateNodes[0].textContent : "";
      end;

      // Convert JavaScript strings to Delphi strings
      title := String(title);
      link := String(link);
      description := String(description);
      pubDate := String(pubDate);

      // Do something with the extracted data
      // For example, you can display it in a memo
      Memo1.Lines.Add('Title: ' + title);
      Memo1.Lines.Add('Link: ' + link);
      Memo1.Lines.Add('Description: ' + description);
      Memo1.Lines.Add('PubDate: ' + pubDate);
      Memo1.Lines.Add('------------------------');

      // Populate the WebStringGrid if it's available
      if Assigned(WebStringGrid1) then
      begin
        WebStringGrid1.Cells[0, i + 1] := title;
        WebStringGrid1.Cells[1, i + 1] := link;
        WebStringGrid1.Cells[2, i + 1] := description;
        WebStringGrid1.Cells[3, i + 1] := pubDate;
      end;
    end;
  except
    on E: Exception do
    begin
      // Handle any exceptions here
    end;
  end;
end;

When I added populating the string grid I get an error:
https://debugrss.onrender.com/

ERROR
Uncaught TypeError: Cannot read properties of undefined (reading 'cells') | TypeError: Cannot read properties of undefined (reading 'cells') at Object.CellRealElement (https://debugrss.onrender.com/RSSfeeds.js:69987:24) at Object.SetCells (https://debugrss.onrender.com/RSSfeeds.js:69193:17) at Object.WebHttpRequest1Response (https://debugrss.onrender.com/RSSfeeds.js:76822:33) at Object.cb [as FOnResponse] (https://debugrss.onrender.com/RSSfeeds.js:245:19) at Object.HandleResponse (https://debugrss.onrender.com/RSSfeeds.js:29708:42) at XMLHttpRequest.cb (https://debugrss.onrender.com/RSSfeeds.js:261:28)

I had the rows set to 200. There was 299 results. I set to 500 and the error has gone.

2 Likes