![]() |
XML: Fehler beim Einlesen eines XML Streams
Liste der Anhänge anzeigen (Anzahl: 2)
Guten Abend,
mit dem folgenden Code lese ich XML Streams ein:
Delphi-Quellcode:
wobei XMLDocument vom Typ TXMLDocument ist.
...
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; 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 & Tags im Text? Nun ich könnte XMLDocument1.LoadFromStream(xmlStream); in try .. except einpacken. Aber was mich interessiert, ist die Schreibweise mit & im XML Text nicht XML konform oder hat der Parser einen Bug? Hier ein Auszug der XML Datei.
XML-Code:
Die Fehlermeldung und die XML Datei habe ich angehängt.
<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�s hottest film makers, Hammer & 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 & 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�s hottest film makers, Hammer & 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 & 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> Wäre schön, wenn jemand etwas Licht in die Sache bringen könnte. Grüße Klaus |
Re: XML: Fehler beim Einlesen eines XML Streams
Er meckert über einen fehlerhaften Buchstaben,
vielleicht stört ihn das Zitat:
|
Re: XML: Fehler beim Einlesen eines XML Streams
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? & gehört definitiv nicht hinein. (so ein Quatsch...) Freundliche Grüße |
Re: XML: Fehler beim Einlesen eines XML Streams
Guten Abend Achim,
so hole ich die Daten ab:
Delphi-Quellcode:
Das Beispiel, das ich im ersten Beitrag angehängt habe,
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'); 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 |
Re: XML: Fehler beim Einlesen eines XML Streams
Zitat:
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 |
Re: XML: Fehler beim Einlesen eines XML Streams
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 |
Re: XML: Fehler beim Einlesen eines XML Streams
Zitat:
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 |
Re: XML: Fehler beim Einlesen eines XML Streams
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. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:39 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz