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>
