AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

RSS-Feed einlesen

Ein Thema von Igotcha · begonnen am 12. Sep 2004 · letzter Beitrag vom 12. Sep 2004
Antwort Antwort
Igotcha

Registriert seit: 22. Dez 2003
544 Beiträge
 
Delphi 2006 Professional
 
#1

RSS-Feed einlesen

  Alt 12. Sep 2004, 19:45
Hallo zusammen,

ich möchte aus folgenden RSS-Feed die "<item>" auslesen (Aufbau):

Delphi-Quellcode:
<?xml version="1.0" encoding="ISO-8859-1"?>

<!DOCTYPE rss PUBLIC "-//Netscape Communications//DTD RSS 0.91//EN"
 "http://my.netscape.com/publish/formats/rss-0.91.dtd">

<rss version="0.91">

<channel>
<title>WarCry-Realm</title>
<link>http://worker/warcry/</link>
<description>WarCry-Realm :: Alles rund um das CCG</description>
<language>de-de</language>
<image>
 <title>WarCry-Realm</title>
 <url>http://worker/warcry/images/logo.jpg</url>
 <link>http://worker/warcry/</link>
</image>
<webMaster>Admin@warcry-realm.de</webMaster>
<item>
<title>Eindrücke und Bilder vom Games Day 2004</title>
<link>http://worker/warcry/modules.php?op=modload&amp;name=News&amp;file=article&amp;sid=72</link>
<description>Auf der offiziellen Seite von Games-Workshop kann man sich ein paar Bilderchen vom diesjährigen Games Day anschauen. Auch der Sabertooth-Games Stand ist mit verewigt. </description>
</item>
<item>
....
</item>
</channel>
</rss>
Ich habe mal mein gesamtes Grundgerüst angehängt, da ich den Fehler einfach nicht erkennen kann (habe mich an das XML-Tutorial gehalten):

Delphi-Quellcode:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, MSXML2_TLB, StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  xmlDoc: IXMLDOMDocument2;
implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var
  myNodeList: IXMLDOMNodeList;
  subNode: IXMLDOMNode;
  strDummy: String;
  ix: Integer;
begin
  xmlDoc := CoDOMDocument40.Create;
  xmlDoc.setProperty('NewParser', true);
  strDummy:=ExtractFilePath(Application.ExeName)+'backend.rss';
  xmldoc.load(strDummy);

  myNodeList := xmldoc.documentElement.selectNodes('//channel/item'); <-- Access Violation
  for ix:=0 to myNodeList.length-1 do
  begin

  end;

end;

end.
Bin für jeden Tip dankbar, da ich mit XML gerade anfange zu experimentieren.

Gruß Igotcha
  Mit Zitat antworten Zitat
Benutzerbild von sakura
sakura

Registriert seit: 10. Jun 2002
Ort: München
11.412 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: RSS-Feed einlesen

  Alt 12. Sep 2004, 19:52
Bei obenstehenden XML fehlt das abschließende </rss> Tag, damit ist DocumentElement nil und Du erhälst die AV

......
Daniel W.
Ich bin nicht zurück, ich tue nur so
  Mit Zitat antworten Zitat
Igotcha

Registriert seit: 22. Dez 2003
544 Beiträge
 
Delphi 2006 Professional
 
#3

Re: RSS-Feed einlesen

  Alt 12. Sep 2004, 19:53
Ups, sorry mein Fehler, habe nur die ersten Zeilen gepostet - ich ändere das oben.
  Mit Zitat antworten Zitat
Benutzerbild von sakura
sakura

Registriert seit: 10. Jun 2002
Ort: München
11.412 Beiträge
 
Delphi 11 Alexandria
 
#4

Re: RSS-Feed einlesen

  Alt 12. Sep 2004, 19:58
Dann ändere mal den Code wie folgend:

Code:
[..]
begin
  xmlDoc := CoDOMDocument40.Create;
  xmlDoc.setProperty('NewParser', true);
  strDummy:=ExtractFilePath(Application.ExeName)+'backend.rss';
  xmldoc.load(strDummy);

  [color=#2400ff]if xmldoc.parseError.errorCode <> 0 then
  begin
    ShowMessage(xmldoc.parseError.errorMessage);
    Exit;
  end;

  // einen PUNKT vor den "//"
  myNodeList := xmldoc.documentElement.selectNodes('.//channel/item');[/color]
  for ix:=0 to myNodeList.length-1 do
  begin

  end;
end;
......
Daniel W.
Ich bin nicht zurück, ich tue nur so
  Mit Zitat antworten Zitat
Igotcha

Registriert seit: 22. Dez 2003
544 Beiträge
 
Delphi 2006 Professional
 
#5

Re: RSS-Feed einlesen

  Alt 12. Sep 2004, 20:03
Delphi-Quellcode:
xmlDoc := CoDOMDocument40.Create;
  xmlDoc.setProperty('NewParser', true);
  strDummy:=ExtractFilePath(Application.ExeName)+'backend.rss';
  xmldoc.load(strDummy);
   if xmldoc.parseError.errorCode <> 0 then
  begin
    ShowMessage(xmldoc.parseError.reason); (xmldoc.parseError.errorMessage gibbet bei mir nicht)
    Exit;
  end;
  myNodeList := xmldoc.documentElement.selectNodes('.//channel/item');
  for ix:=0 to myNodeList.length-1 do
  begin

  end;
"Die DTD-Validierung wird bei der Verwendung von MXXML Writer oder der Option "New Parser" zum Erstellen eines DOMDocuments nicht unterstützt."

Mache ich

 xmlDoc.setProperty('NewParser', false); kommt es wieder zur AV.

Noch zur Info: D7, WinXP, aktuellen XML-Parser von Microsoft geladen gemäß Tutorial.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:36 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz