AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein XML Delphi XML: Fehler beim Einlesen eines XML Streams

XML: Fehler beim Einlesen eines XML Streams

Ein Thema von Klaus01 · begonnen am 20. Jan 2007 · letzter Beitrag vom 20. Jan 2007
Antwort Antwort
Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.620 Beiträge
 
Delphi 10.4 Sydney
 
#1

XML: Fehler beim Einlesen eines XML Streams

  Alt 20. Jan 2007, 18:09
Guten Abend,
mit dem folgenden Code lese ich XML Streams ein:
Delphi-Quellcode:
...
   if xmlStream.Size > 0 then
     begin

       XMLDocument1.LoadFromStream(xmlStream); // hier tritt das Problem auf.
       XMLDocument1.Active:=true;

         ANode:=XMLDocument1.DocumentElement.ChildNodes.FindNode('channel');

     // with treeview1.Items.AddFirst(nil,ANode.ChildNodes['title'].Text) do
     // selected:=true;

       StartItemNode:=XMLDocument1.DocumentElement.ChildNodes.First.ChildNodes.FindNode('item');

       ANode:=StartItemNode;
       repeat
          //treeview1.Items.AddChild(treeview1.Selected,
          data.itemTitle:=getText(ANode.ChildNodes.FindNode('title'));
          data.itemUrl:=ANode.ChildNodes.FindNode('enclosure').Attributes['url'];
          data.itemLength:=StrToInt(ANode.ChildNodes.FindNode('enclosure').Attributes['length']);
          //Node.selectSingleNode("enclosure").ge
          TFeed(List[number]).addItem(data);
          ANode:=ANode.NextSibling;
       until ANode = nil;
     end;
   xmlDocument1.Active:=false;
   xmlStream.Free;
end;
wobei XMLDocument vom Typ TXMLDocument ist.

Normalerweise funktioniert der Code ohne Probleme, nur bei dieser XML Datei macht er Probleme.
Delphi gibt diese Fehlermeldung aus: EDOMParseError : 'An invalid character was found in text content.
<description> A preview of the coming'

Stolpert der Parser über die &amp; Tags im Text?

Nun ich könnte

XMLDocument1.LoadFromStream(xmlStream);
in try .. except einpacken.

Aber was mich interessiert, ist die Schreibweise mit &amp; im XML Text nicht XML konform oder
hat der Parser einen Bug?

Hier ein Auszug der XML Datei.

XML-Code:
<rss version="2.0" xmlns:media="http://search.yahoo.com/mrss/" xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd">
   <channel>
      <title>Radio 1 Documentaries</title>
      <link>http://www.bbc.co.uk/radio1/documentaries/podcast.shtml</link>
      <description>Sex, drugs, UFOs, soldiers, saving the planet...have you got an opinion on these issues? Colin Murray has and the Radio 1 documentaries podcast will give you all the shizzle...what they think, what we think, and most importantly what YOU have to say. For more information and podcast terms of use go to www.bbc.co.uk/radio1</description>
      <itunes:author>BBC Radio 1</itunes:author>

      <itunes:owner>
         <itunes:name>BBC</itunes:name>
          <itunes:email>podcasting@bbc.co.uk</itunes:email>
      </itunes:owner>
      <language>en-gb</language>
      <ttl>720</ttl>
      
      <itunes:image href="http://www.bbc.co.uk/radio/downloadtrial/images/programmes/300x300/radio1_interviews.jpg"/>

      
      <copyright>(C) BBC 2006</copyright>
      <pubDate>Fri, 19 Jan 2007 16:43:52 +0000</pubDate>
      <itunes:category text="Music"/><itunes:category text="Health"/>
      
      <itunes:keywords>BBC,Radio1,Radio,Music,Sex,Drugs,Documentary</itunes:keywords>
      <itunes:explicit>No</itunes:explicit>
      
      <item>

         <title>Documentary: Film 07</title>
         <description>A preview of the coming year in film, with exclusive on set audio diary from the UK&#65533;s hottest film makers, Hammer &amp; Tongs, as they work on the follow up to their box office smash, Hitchhikers Guide To The Galaxy. Colin also chats film with Simon Pegg &amp; Nick Frost.</description>
         <itunes:subtitle>Documentary: Film 07</itunes:subtitle>
         <itunes:summary>A preview of the coming year in film, with exclusive on set audio diary from the UK&#65533;s hottest film makers, Hammer &amp; Tongs, as they work on the follow up to their box office smash, Hitchhikers Guide To The Galaxy. Colin also chats film with Simon Pegg &amp; Nick Frost.</itunes:summary>

         <pubDate>Fri, 19 Jan 2007 16:00:00 +0000</pubDate>
         <itunes:duration></itunes:duration>
         <guid isPermaLink="false">http://downloads.bbc.co.uk/rmhttp/downloadtrial/radio1/radio1documentaries/radio1documentaries_20070119-1600_40_pc.mp3</guid>
         <enclosure
            url="http://downloads.bbc.co.uk/rmhttp/downloadtrial/radio1/radio1documentaries/radio1documentaries_20070119-1600_40_pc.mp3"
            length="12570149"
            type="audio/mpeg"/>
         <media:content url="http://downloads.bbc.co.uk/rmhttp/downloadtrial/radio1/radio1documentaries/radio1documentaries_20070119-1600_40_pc.mp3"
            fileSize="12570149"
            type="audio/mpeg"
            expression="full"
            duration=""
            bitrate="40"/>
         
      </item>
Die Fehlermeldung und die XML Datei habe ich angehängt.
Wäre schön, wenn jemand etwas Licht in die Sache bringen könnte.

Grüße
Klaus
Miniaturansicht angehängter Grafiken
xml-error_935.jpg  
Angehängte Dateien
Dateityp: xml rss_111.xml (4,1 KB, 7x aufgerufen)
Klaus
  Mit Zitat antworten Zitat
Benutzerbild von BUG
BUG

Registriert seit: 4. Dez 2003
Ort: Cottbus
2.094 Beiträge
 
#2

Re: XML: Fehler beim Einlesen eines XML Streams

  Alt 20. Jan 2007, 18:52
Er meckert über einen fehlerhaften Buchstaben,
vielleicht stört ihn das
Zitat:
nach dem "UK" in der XML-Datei ?!
Intellekt ist das Verstehen von Wissen. Verstehen ist der wahre Pfad zu Einsicht. Einsicht ist der Schlüssel zu allem.
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#3

Re: XML: Fehler beim Einlesen eines XML Streams

  Alt 20. Jan 2007, 19:19
Guten Abend Klaus,

wie hast du die entities in das Dokument hinein geschafft? Hast du das Dokument per WebBrowser abgeholt und dann gespeichert oder waren noch andere Programme beteiligt? &amp; gehört definitiv nicht hinein. (so ein Quatsch...)

Freundliche Grüße
  Mit Zitat antworten Zitat
Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.620 Beiträge
 
Delphi 10.4 Sydney
 
#4

Re: XML: Fehler beim Einlesen eines XML Streams

  Alt 20. Jan 2007, 19:51
Guten Abend Achim,

so hole ich die Daten ab:
Delphi-Quellcode:
   xmlStream:=TMemoryStream.Create;

   url:= TFeed(List[number]).feedURL;
   StatusBar1.Panels[0].Text:=url;
   if Url <> 'then
     begin
       try
         idhttp1.Get(url,xmlStream);
       except
         on E: Exception do
           begin
             WriteLog('http error while trying to get <'+url+'> : '+E.Message);
             xmlStream.Clear;
           end;
       end;
     end
     else
       WriteLog('http error, empty URL');
Das Beispiel, das ich im ersten Beitrag angehängt habe,
habe ich mit einem Browser (FF) gespeichert.
In einem Programm hole ich die XML Daten mit idhttp ab
und speichere Sie direkt in eine Stream.

Also könnte es sein, daß der Autor der XML Datei
das Fehler eingebaut hat?

Grüße
Klaus
Klaus
  Mit Zitat antworten Zitat
Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.620 Beiträge
 
Delphi 10.4 Sydney
 
#5

Re: XML: Fehler beim Einlesen eines XML Streams

  Alt 20. Jan 2007, 20:01
Zitat von BUG:
Er meckert über einen fehlerhaften Buchstaben,
vielleicht stört ihn das
Zitat:
nach dem "UK" in der XML-Datei ?!
Hallo BUG,

nun, wenn ich die XMLD atei mit dem IE aufmache,
dann mosert er über das Zeichen nach UK, das ein ? ist.

Mit dem FireFox wird die XML Datei angezeigt.

[edit1]
Ich habe mir nun einmal die XML Datei im Notepad anzeigen lassen.
Nach dem UK steht dort ein ´ Zeichen, wenn ich dieses austausche
wird die XML Datei auch richtig im IE angezeigt.
[/edit1]

Grüße
Klaus
Klaus
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#6

Re: XML: Fehler beim Einlesen eines XML Streams

  Alt 20. Jan 2007, 20:43
Hallo Klaus,

die Standard-Entities sind natürlich kein Problem. Allerdings scheint mir der IE7 (habe momentan keinen anderen) Wert darauf zu legen, dass ein Dokument mit encoding UTF-8 auch mit einem entsprechenden byte-order-mark gespeichert wird. Nachdem ich das gemacht habe zeigt auch der IE7 keinen Fehler mehr an.

Freundliche Grüße
  Mit Zitat antworten Zitat
Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.620 Beiträge
 
Delphi 10.4 Sydney
 
#7

Re: XML: Fehler beim Einlesen eines XML Streams

  Alt 20. Jan 2007, 21:15
Zitat von marabu:
Hallo Klaus,

die Standard-Entities sind natürlich kein Problem. Allerdings scheint mir der IE7 (habe momentan keinen anderen) Wert darauf zu legen, dass ein Dokument mit encoding UTF-8 auch mit einem entsprechenden byte-order-mark gespeichert wird. Nachdem ich das gemacht habe zeigt auch der IE7 keinen Fehler mehr an.

Freundliche Grüße
Hallo Achim,

wie setzt Du denn den byte-order-mark?
Aber laut den Specs für XML ist die byte-order-mark für UTF-8 doch optional?

Einen schönen Abend noch.
Grüße
Klaus
Klaus
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#8

Re: XML: Fehler beim Einlesen eines XML Streams

  Alt 20. Jan 2007, 21:25
Habe einfach den Windows Editor benutzt - "Speichern unter" und dort kannst du dann die Zeichenkodierung wählen. Ich weiß auch nicht was mit dem IE7 los ist, aber er ist ja auch noch frisch. Außerdem testen wir ja nicht in der richtigen Umgebung, denn mir liegt das XML-Dokument nicht zuverlässig im Originalzustand vor - der feed ist wohl nicht mehr ganz aktuell und momentan sind bei BBC Radio One keine Ampersands zu sehen.

Dir auch noch einen schönen Abend.
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 17:54 Uhr.
Powered by vBulletin® Copyright ©2000 - 2021, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2021 by Daniel R. Wolf