[Munich-pm] XML::RSS::Parser::Lite - Whitespace in Source
Stefan Bauer
stefan.bauer at cubewerk.de
Tue Feb 14 23:42:06 PST 2012
-----Ursprüngliche Nachricht-----
Von: Harald.Joerg at arcor.de
Gesendet: Mi 15.02.2012 01:39
Betreff: Re: [Munich-pm] XML::RSS::Parser::Lite - Whitespace in Source
An: Stefan Bauer <stefan.bauer at cubewerk.de>;
CC: Perl Mongers, MUC <munich-pm at pm.org>;
> Die RSS-Seite ist korrekt, der Parser stolpert. Der junk, den Du
> siehst, ist nämlich tatsächlich *vor* dem ersten Element, und es handelt
> sich dabei um die BOM (Byte Order Mark), oder hex EF BB BF. UTF-8 darf
> sowas mitbringen, weil's eben Unicode ist, obwohl man es bei UTF-8 (im
> Unterschied zu UTF-16) gar nicht braucht. Perl an sich macht das
> richtig, drum siehst Du rein gar nichts, wenn Du den RSS-Text mit print
> ausgibst.
>
> Wenn Du das Ding mit use bytes einliest und die ersten drei Bytes
> schlachtest, dann stirbt der Parser nicht mehr.
>
> Wenn Du das Ding mit binmode UTF8 einliest, dann musst Du nur den ersten
> Character (hier nicht Byte!) schlachten. Der sieht nämlich so aus:
>
> DB<16> printf("%X",ord(substr($xml,0,1)))
> FEFF
>
> ...und FEFF ist eben der Unicode-Codepoint der BOM.
> Ein robuster Code könnte so aussehen:
>
> 1) den Content-Type checken: bei text/xml ist UTF-8 default
> 2) falls ja: mit binmode $fh, ':UTF8' einlesen
> 3) danach mit $rss =~ s/^\x{FEFF}// die BOM schlachten,
> falls vorhanden
> 4) ...und dann erst an den Parser verfüttern.
Hallo Harald,
danke für die äußerst ausführliche Erklärung. Auf eine Antwort wartend habe ich folgenden Workaround genutzt gestern:
getstore("http://rss.jobsearch.monster.com/rssquery.ashx?rad_units=km&lv=11&lv=12&cy=de&indid=77&pp=15&jt=3&tm=0&sort=rv.di.dt&occ=660.11996&occ=660.11774&occ=660.11754&occ=660.11772&occ=660.11787&occ=660.11847&occ=660.11848&occ=660.11969&occ=660.11970&occ=660.11904&occ=660.11882&occ=660.11979&occ=660.11987&occ=660.12005&baseurl=stellenanzeige.monster.de%27",$rss_datei);
$xml = get("file://$rss_datei");
Ich frage mich jetzt, warum durch diese Methode die BOM verschwunden ist?
Stefan
More information about the Munich-pm
mailing list