Gabriel: Entityumwandlungen

Beitrag lesen

Moin!

Es ist überflüssig, solche Zeichen in Entities zu verpacken. Aber wenn du auf CDATA verzichtest, musst du in der Tat alle im HTML-Quelltext enthaltenen Zeichen, die in XML Sonderbedeutung haben, als Entity schreiben. htmlspecialchars() mit der passenden Option reicht da vollkommen aus - alternativ benutzt du eine passende XML-Klasse (z.B. DOM), der du einfach den HTML-Quelltext als Knoteninhalt übergibst - die Klasse sorgt dann für den korrekten Aufbau des XML.
»»
Die ersten Test-XMLs habe ich von Hand geschrieben. Das Script greift per SimpleXML auf die Daten zu, ich bin aber nicht davon ausgegangen, dass die Daten automatisch umgewandelt werden wenn ich sie per SimpleXML lade, ändere oder speichere.
Das werde ich gleich mal ausprobieren. Danke!

Ich habe es gerade getestet. Aber mir scheint als wäre SimpleXML keine in deinem Sinne "geeignete Klasse"?

Kurz vorweg: $xml ist eine Klasse in der xmlfile wie folgt mit Inhalt befüllt wird:
$this->xmlfile = simplexml_load_file('test.xml');

Wenn ich folgendes mache:
$xml->xmlfile->addChild("Child", "No02.&amp;ö<a");
Dann hat das Kind "Child" den Wert "No02.", d.h. ab dem ersten Sonderzeichen wird alles abgeschnitten.

Und bei folgender Aktion:
$xml->xmlfile->addChild("Child", "No02.&amp;ö<a#");
Wird ein inhaltsleeres Kind hinzugefügt...

Das ist nicht das, was du mit "eine passende XML-Klasse, der du einfach den HTML-Quelltext als Knoteninhalt übergibst - die Klasse sorgt dann für den korrekten Aufbau des XML." meintest, oder?

Gruß
Gabriel