• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

XML aus Datei laden und an JavaScript übergeben

RestlessKing

Neues Mitglied
Hi, ich will Text aus einer XML-Datei laden, welcher dann in meiner HTML-Seite eingebunden werden soll. Dazu erstelle ich in Javascript ein Request-Object welches den Pfad zur XML-Datei per GET an ein PHP-Skript übermittelt. Das PHP-Skript soll dann die XML Datei öffnen und an den Handler im JavaScript übergeben welcher die Werte dann aus dem request.responseXML zieht.

Allerdings muss das XML noch im falschen Format sein, jedenfalls komme ich über JavaScript nicht ran. Wenn ich das PHP-Skript XML-Tags ausgeben lasse kann ich jedoch darauf zugreifen.

Hier der Code:

PHP lädt die XML-Datei:
Code:
<?php
$content = $_REQUEST['content'];
$xml = simplexml_load_file("topics/" .$content. ".xml");
header('Content-type: text/xml');
echo $xml;
?>
JavaScript versucht diese zu öffnen bekommt aber nichts:
Code:
var responseDoc = contentRequest.responseXML; 
alert(responseDoc.getElementsByTagName("entry")[0].firstChild.nodeValue);

Mit diesem PHP-Code funktioniert es, aber ich will ja die Werte aus Dateien bekommen:

Code:
echo '<?xml version="1.0" encoding="ISO-8859-1"?><entry>"Test"</entry>';

Was mache ich falsch ? Schonmal danke im vorraus. :D
 
Das Problem liegt daran, dass simplexml_load_file ein Object aus den XML Daten liest. Anschließend versuchst du per echo das Object auszugeben, was nicht funktioniert. Da du, wie es scheint, nur den Inhalt der XML-Datei auslesen/ausgeben möchtest, könntest du folgenden Code verwenden:

PHP:
<?php
if(file_exists("topics/" . $_GET['content'] . ".xml")){
  echo file_get_contents("topics/" . $_GET['content'] . ".xml");
} else {
  echo "Fehler";
}
?>

Da du den Request per GET machst, kannst du dir die übergebenen Parameter auch per $_GET holen. file_exists überprüft, ob die Datei existiert. Wenn ja, wird diese mittels file_get_contents ausgegeben. file_get_contents tut nichts anderes, als den kompletten Inhalt der Datei zu laden, inklusive der Metadaten wie dem MIME-Type. Im else kannst du dir eine Fehlermeldung oder einen Fehlercode ausdenken, welchen du im JavaScript abfangen kannst.

Code:
var responseDoc = contentRequest.responseXML;
if(responseDoc == 'Fehler') alert("Es ist ein Fehler aufgetreten, die angeforderte Datei existiert nicht!");
else alert(responseDoc.getElementsByTagName("entry")[0].firstChild.nodeValue);
 
Zurück
Oben