/XML: Charset bei oder nach domxml_new_doc() angeben
Auge
- php
Hallo
Nun setze ich mich schon ran, um mich mit XML zu beschäftigen, und schon gehen die Probleme los.
Ich lege über die DOM XML Funktionen mit $dokument = domxml_new_doc("1.0")
ein neues XML-Dokument an. Hernach werden mit create_element
, append_child
, create_text_node
die weiteren Elemente erzeugt und befüllt. So weit, so gut.
Wenn ich das Ergebnis mit $dokument->dump_file($xml_file,false,true)
in eine Datei schreiben will, bekomme ich folgende Fehlermeldung:
Warning: dump_file(): xmlEncodeEntitiesReentrant : char out of range
Google-Ergebnisse sprechen davon, z.B. per iconv()
den Charset anzupassen. Aber ohne Kenntnis desselben will ich da nicht ran (die dazugehörige Frage(n): siehe unten).
Vorerst sieht die Ausgabe so aus (die Datei wird also geschrieben):
<?xml version="1.0"?>
<news>
<eintrag>
<nr>1</nr>
<createdate>20060301191046</createdate>
<changedate></changedate>
<header>Alles in Butter?</header>
<newsbody>Das weiߠich auch bloߠnicht.
bla bla bla
Auge</newsbody>
<linkziel>http://www.example.com/</linkziel>
<linktext>Beispielseite</linktext>
</eintrag>
</news>
Die deutschen Sonderzeichen werden maskiert. Folgt ihnen unmittelbar ein Leerzeichen, wird dies verschluckt.
Wenn ich die Variablen vorher mit htmlentities()
behandle, steht in <newsbody>:
"Das wei&szlig; ich auch blo&szlig; nicht.
bla bla bla
Auge"
Der Inhalt der Textnodes kommt aus Variablen, die aus einem HTML-Formular gefüttert werden. Die HTML-Seite hat den Charset "iso-8859-1".
<?xml version="1.0" encoding="ISO-8859-1"?>
)?Tschö, Auge