XML mit Umlauten

Hallo,
ich möchte eine XML Datei parsen und ausgeben. Leider werden dabei die deutschen Umlaute nicht korrekt angezeigt. Den ISO-8859-1 habe ich angegeben. Das Problem entsteht wohl beim parsen, oder?

 <?php // In der globalen Variablen $html wird später das<br />// erzeugte HTML gespeichert.
$html = "<?xml version='1.0' encoding='iso-8859-1'?>";

// Die XML-Datei wird in die Variable $xmlFile eingelesen.
// Die implode-Funktion wird verwendet, um Arrays zu einem
// String zusammenzukleben.
$xmlFile = implode("", file("text.xml"));

// Der Parser wird erstellt
$parser = xml\_parser\_create();

// Setzen der Handler (Funktionen startElement, endElement)
xml\_set\_element\_handler($parser,"startElement","endElement");
// Setzen des CDATA-Handlers (Funktion cdata)
xml\_set\_character\_data\_handler($parser, "cdata");

// Parsen.
// Während des Parsens werden die vorher gesetzten
// Handler bei entsprechenden Ereignissen aufgerufen
xml\_parse($parser, $xmlFile);

// Gibt alle verbrauchten Ressourcen wieder frei.
xml\_parser\_free($parser);

// Ausgabe der globalen Variable $html.
print $html;
print "";

/\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*
Funktionsdeklarationen
\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*/

function startElement($parser, $name, $atts) {
 global $html, $nummer;
 // Die XML-Namen werden in Großbuchstaben übergeben.
 // Mit strtolower() werden sie in Kleinbuchstaben
 // umgewandelt.
 switch (strtolower($name)) {


 case "title";
 $html .=" ";
 break;
 case "description";
 $html .=" ";
 break;

 case "link":
 $html .= " ";
 break;

 case "item":
 $html .= " ";
 break;


 }
}

function endElement($parser, $name) {
 global $html;

 switch (strtolower($name)) {
 case "name":
 $html .="**";  
 break;  
 }  
}  
  
function cdata($parser, $text) {  
 global $html;  
  
 // Der normale Text wird einfach an $html angehängt:  
 $html .=$text;  
}  
?\>**  

XML-Datei:

<?xml version="1.0" encoding="iso-8859-1"?>Titel1 Überschrift15.05.2009 | 
 Nach einer aktuellen Entschiedung 
http://www.internet 1.de

 Titel2 Überschrift12.05.2009 | 
 Die Altersgrenze beim Ausbildungsfreibetrag ist auch dann zu beachtenhttp://www.internet 2.de

Hallo raskin,

ich hab ein paar fragen an dich.

  • Hast du schonmal versucht mit der header() funktion von php das charset zu erzwingen?

  • warum benutzt du keine „normalen“ xml parser wie das php DomDocument oder simplexml ?

  • welche codierung hat das xml file ursprünglich?

Mir waren diese Methoden nicht bekannt. Ich teste gleich mal simplexml.

Danke für die Info!

Viele Grüße
Sven