Ich reiße mir die Haare aus und versuche zum ersten Mal mit "einfachem" XML zu arbeiten. Ich erstelle ein kleines CMS für eine Flash-basierte Website und der Inhalt wird in einer XML-Datei gespeichert. Mein Problem ist, dass viele der Kopie Felder XML CDATA Felder sind. auf der einen Seite mit:SimpleXML-, CDATA- und HTML-Entities
$xml = simplexml_load_file($file, 'SimpleXMLElement', LIBXML_NOCDATA);
Ich kann die Daten aus diesem Knoten ziehen und die CDATA-Tags sind abgestreift. Meine Fragen sind mit dem Versuch, die Daten zu speichern, mit:
file_put_contents($file, $xml->asXML());
Probleme sind:
a) Tags werden mit ihrem HTML-Entity-Äquivalente interpretiert. Ich möchte nicht, dass das passiert. Ich nehme an, das kommt von der asXML-Methode, denn selbst wenn ich einen html_entity_decode für die $ _POST-Daten mache, wird er immer noch konvertiert.
b) aufgrund des oben genannten gibt es keine Möglichkeit, die CDATA-Tags hinzuzufügen, weil sie auch ihre Zeichen konvertiert haben.
SimpleXML war bisher alles andere als einfach für mich. Ist jemals jemand darauf gestoßen?
IMO, es ist ein weit verbreitetes Missverständnis, dass das * einfache * in SimpleXml * einfach zu verwenden * bedeutet. Es bedeutet eher, dass Sie für einfache XML-Anwendungen verwenden sollten. Und für alles andere, verwenden Sie eine geeignete API, wie DOM. – Gordon
Danke Gordon! Da ich mich nur mit Datenbanken mit meinen Daten beschäftigen musste, war mir die DOM-Klasse gar nicht bewusst. Das sieht viel mehr danach aus, was ich brauche. CDATA funktioniert! Super, danke für die schnelle und einfache Antwort. Übrigens, die einfache Sache war ein wirklich schlechter Witz. –