Auge: /XML: Charset bei oder nach domxml_new_doc() angeben

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&#x7E0;ich auch blo&#x7E0;nicht.&#13;  
&#13;  
bla bla bla&#13;  
&#13;  
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&amp;szlig; ich auch blo&amp;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".

  • Wie kann ich den Charset der Datei ermitteln?
  • Wie kann ich dem Element <?xml> eine Encoding-Angabe hinzufügen (z.B. <?xml version="1.0" encoding="ISO-8859-1"?>)?
  • Bin ich überhaupt auf der richtigen Spur?

Tschö, Auge

--
Die Musik drückt aus, was nicht gesagt werden kann und worüber es unmöglich ist zu schweigen.
(Victor Hugo)
Veranstaltungsdatenbank Vdb 0.1