XML mit Umlauten

Von: , Frage gestellt am Mo, 18. Mai 2009

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
// erzeugte HTML gespeichert.
$html = "<?xml version='1.0' encoding='iso-8859-1'?>	
		 <html>
		 <body>";

// 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 "</body></html>";

/*************************************
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 .="<h2>";
		break;
	case "description";
		$html .="<h6>";
		break;
	
	case "link":
		$html .= "<hr>";
		break;

	case "item":
		$html .= "<hr color=\"blue\">";
		break;
	
	
	}
}

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

	switch (strtolower($name)) {
	case "name":
		$html .="<b>";
		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"?>	

<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">

<channel>
  
<item>    <title>Titel1 Überschrift</title>
    <description>15.05.2009 | 
	Nach einer aktuellen Entschiedung 
</description>
    <link>http://www.internet 1.de</link>
    
	</item>	
	<item>    <title>Titel2 Überschrift</title>
    <description>12.05.2009 | 
	Die Altersgrenze beim Ausbildungsfreibetrag ist auch dann zu beachten</description>
    <link>http://www.internet 2.de</link>
    
	</item>	
</channel></rss>

2 Antworten zu dieser Frage

  1. Antwort von nach 5 Stunden 0 hilfreich
    Re: XML mit Umlauten

    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?


    • Antwort von nach 5 Stunden 0 hilfreich
      Re^2: XML mit Umlauten

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

      Danke für die Info!

      Viele Grüße
      Sven

Keine passende Antwort gefunden? Jetzt eigene Frage stellen!