XML File in PHP integrieren
Hallo,
ich möchte ein XML File, welches in einem Verzeichniss auf dem WebServer liegt, in einem PHP-File einbinden, damit ich dieses auch von extern mir anzeigen lassen kann.
Das XML - File liegt in einem Verzeichniss "C:\Programme\..." auf dem Webserver.
Das XML-File kann ich aber nicht an einen anderen Ort kopieren, das dieses ständig durch ein programm akualisiert wird, und in dem Verzeichniss bleiben muß.
Wie kann ich dieses File in einem PHP oder HTML File mir anzeigen lassen, das ich auch vom WEB-Server aus mir den Inhalt anzeigen lassen kann ???
So hab ich es momentan probiert.
bekomme aber nur als Fehlermeldung:
Warning: fopen(C.\Programme....) [function.fopen]:failed to open stream: Invalid argument on line 24
Could not open XML input
Hat hier einer ne Idee...
Odre mach ich hier komplett was falsch ???
Danke
ich möchte ein XML File, welches in einem Verzeichniss auf dem WebServer liegt, in einem PHP-File einbinden, damit ich dieses auch von extern mir anzeigen lassen kann.
Das XML - File liegt in einem Verzeichniss "C:\Programme\..." auf dem Webserver.
Das XML-File kann ich aber nicht an einen anderen Ort kopieren, das dieses ständig durch ein programm akualisiert wird, und in dem Verzeichniss bleiben muß.
Wie kann ich dieses File in einem PHP oder HTML File mir anzeigen lassen, das ich auch vom WEB-Server aus mir den Inhalt anzeigen lassen kann ???
So hab ich es momentan probiert.
<?php
$file = "C:\Programme\Log\topology.xml";
$depth = array();
function startElement($parser, $name, $attrs)
{
global $depth;
for ($i = 0; $i < $depth[$parser]; $i++) {
echo " ";
}
echo "$name\n";
$depth[$parser]++;
}
function endElement($parser, $name)
{
global $depth;
$depth[$parser]--;
}
$xml_parser = xml_parser_create();
xml_set_element_handler($xml_parser, "startElement", "endElement");
if (!($fp = fopen($file, "r"))) {
die("could not open XML input");
}
while ($data = fread($fp, 4096)) {
if (!xml_parse($xml_parser, $data, feof($fp))) {
die(sprintf("XML error: %s at line %d",
xml_error_string(xml_get_error_code($xml_parser)),
xml_get_current_line_number($xml_parser)));
}
}
xml_parser_free($xml_parser);
?>
bekomme aber nur als Fehlermeldung:
Warning: fopen(C.\Programme....) [function.fopen]:failed to open stream: Invalid argument on line 24
Could not open XML input
Hat hier einer ne Idee...
Odre mach ich hier komplett was falsch ???
Danke
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 153788
Url: https://administrator.de/contentid/153788
Ausgedruckt am: 25.11.2024 um 20:11 Uhr
16 Kommentare
Neuester Kommentar
Zuerst mal empfiehlt sich meistens SimpleXML zu verwenden.
Zum anderen wir diese Zeile geparst
Und nein, ein Tab ist kein gültiges Zeichen in einem Dateinamen.
Weshalb man auch immer einfache Anfürhungszeichen benutzt, wenn man nicht ganz genau weiß was man will.
Zum anderen wir diese Zeile geparst
$file = "C:\Programme\Log\topology.xml";
zu$file = "C:\Programme\Log opology.xml";
Weshalb man auch immer einfache Anfürhungszeichen benutzt, wenn man nicht ganz genau weiß was man will.
Also:
Wie kann ich dieses File in einem PHP oder HTML File mir anzeigen lassen:
Erste möglichkeit wäre, es einfach mit inem iframe in die Page einzubauen. Somit wird es dort ganz normal angezeigt z.B.
Dann, wenn du nur an die Daten der Datei möchtest und diese dann ausgeben willst, hätte ich hier eine JavaScript möglichkeit (das funktioniert natürlich auch mit php aber da weiss ich gerade nicht wie genau)
schau dazu einmal hier evt http://www.phpbuilder.com/annotate/message.php3?id=1020252
Oder habe ich dich falsch verstanden? Hoff ich konnte dir etwas weiter helfen.
MfG
Wie kann ich dieses File in einem PHP oder HTML File mir anzeigen lassen:
Erste möglichkeit wäre, es einfach mit inem iframe in die Page einzubauen. Somit wird es dort ganz normal angezeigt z.B.
<iframe src = "deinedatei.xml"/>
<script type="text/javascript">
var xmlhttp = new ActiveXObject("Msxml2.XMLHTTP.3.0");
xmlhttp.open("GET","xml_file.xml", false);
xmlhttp.send(null);
var variable = xmlhttp.responseXML.selectSingleNode("//gesuchterwert");
var date = variable.text
...
</script>
Oder habe ich dich falsch verstanden? Hoff ich konnte dir etwas weiter helfen.
MfG
Hallo.
Du willst die komplette XML-Datei, die zwar __auf__ dem Server aber __nicht__ im DocumentRoot liegt haben, oder ?
Vorausgesetzt es gibt keine Zugriffsbeschränkungen die den Zugriff auf Dateien außerhalb des DocumentRoots verhindern.
~Arano
Edit:
Ansonsten vielleicht einen Cronjob (Task) einrichten der die Datei ins DocumentRoot kopiert (je nachdem wie aktuell/veraltet die Datei sein darf).
Du willst die komplette XML-Datei, die zwar __auf__ dem Server aber __nicht__ im DocumentRoot liegt haben, oder ?
<?php
echo file_get_contents('C:\Programme\Log\topology.xml');
?>
~Arano
Edit:
Ansonsten vielleicht einen Cronjob (Task) einrichten der die Datei ins DocumentRoot kopiert (je nachdem wie aktuell/veraltet die Datei sein darf).
wenn der Webserver nur intern verwendet wird und es wahrscheinlich ein Apache ist,
sich mal über Alias informieren, dann geht das auch.
Und wenn ich den Thread richtig gerallt habe, soll die Datei einfach nur eingelesen und als Webseite ausgegeben werden?
Oder auch noch etwas damit angestellt werden?
Midi
sich mal über Alias informieren, dann geht das auch.
Und wenn ich den Thread richtig gerallt habe, soll die Datei einfach nur eingelesen und als Webseite ausgegeben werden?
Oder auch noch etwas damit angestellt werden?
Midi
Sprich er muß ja Alles was das XML-File auslöst, auf dem Webserver anzeigen.
Alias "/mama" "C:\katzenmaus\htdocs\beispiel"wenn du das in deine conf packst, kannst du jeden Ordner auf der Platte, glaube sogar auch Netzlaufwerke, damit in den Apache mit integrieren.
aufrufbar dann mit: http://127.0.0.1/mama/
Wenn ich die XML im I-Explorer öffne, und hier ein Wort anklicke, rückt das ganze nach unten, und ich bekomme detailierte Informationen über den Inhalt dieses Wortes.
das ist bei XML so ... !Sprich er muß ja Alles was das XML-File auslöst, auf dem Webserver anzeigen.
Und mit anzeigen, nur den Inhalt auslesen und auf dem Schirm anzeigen lassen ... ! Ohne mit der Datei etwas zu machen ...Dann brauch man auch kein PHP mehr, in dem Sinne!
P.S.: reicht dir das dann nicht?
Syntax:
Wenn du in deiner Conf mal etwas stöberst, ... dann wirst du das erste Paket finden, ...
packst den Alias noch hinzu, wie oben beschrieben, gibt es den Unterordner "mama".
Fertig?
<Directory "C:/katzenmaus/wwwroot">
Options Indexes FollowSymLinks Includes ExecCGI
AllowOverride All
Order allow,deny
Allow from all
</Directory>
Alias "/mama" "C:\katzenmaus\htdocs\beispiel"
Wenn du in deiner Conf mal etwas stöberst, ... dann wirst du das erste Paket finden, ...
packst den Alias noch hinzu, wie oben beschrieben, gibt es den Unterordner "mama".
Fertig?
nun, dachte hättest das gleich mit verstanden.
... du musst immer vom Webbrowser ausgehen!
wenn dein XSL ganz woanders liegt ... geht das natürlich nicht!
http://127.0.0.1/mama ... heißt doch nix anderes, dass im gleichen Ordner oder darunterliegende diese Datei enthalten soll ..., oder?
Ansonsten, kannst du dich auch nochmal über "Virtual Host" informieren!
Aber hilfreich wäre es, wenn du mal so ein bissel von der Datei zeigst, damit das hier keine endlose Diskussion wird!
... du musst immer vom Webbrowser ausgehen!
wenn dein XSL ganz woanders liegt ... geht das natürlich nicht!
http://127.0.0.1/mama ... heißt doch nix anderes, dass im gleichen Ordner oder darunterliegende diese Datei enthalten soll ..., oder?
Ansonsten, kannst du dich auch nochmal über "Virtual Host" informieren!
<VirtualHost *:8080>
DocumentRoot "C:/katzenmama/zunge"
ErrorLog "logs/error.reminder.log"
CustomLog "logs/access.reminder.log" combined
</VirtualHost>
Listen 80
Listen 8080
Aber hilfreich wäre es, wenn du mal so ein bissel von der Datei zeigst, damit das hier keine endlose Diskussion wird!