Hallo zusammen,
ein mittels simplem Aggregator-Script erstellter Feed verliert den validen Status und das kommt so:
Der erste Eintrag wird aus praktischen Gründen per heredoc erstellt und dann so gespeichert:
open (XML, ">:utf8","$file") || die ("xfile: $!\n");
print XML "$start";
close XML;
Das Ergebnis findet der Validator vom W3C noch gut, aber nach Ergänzung auf solche Weise
use XML::DOM;
use utf8;
$parser=XML::DOM::Parser->new();
$doc=$parser->parsefile($file);
$root=$doc->getDocumentElement();
$entries=$doc->getElementsByTagName("entry");
$new=$doc->createElement("entry");
$tobj=$doc->createElement("title");
$tobj->addText($title);
$new->appendChild($tobj);
(...)
$root->insertBefore($new,$entries->item(0));
$doc->printToFile($file);
ist das Ding nicht mehr valide. Der Parser kann den selbst erstellten Feed nicht mehr ausgeben (wg. "invalid Token") und auch der W3C-Validator streikt.
Da allerdings das XML ohne erkennbare Fehler in die Datei geschrieben wird, habe ich den Verdacht, dass es ein Encoding-Problem geben könnte. Kann es sein, dass printToFile hier kein UTF-8 auswirft? Und wie ließe sich das prüfen/ändern?
Greetz
daywalker