badfsaadkl
Goto Top

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.


<?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

Content-ID: 153788

Url: https://administrator.de/contentid/153788

Ausgedruckt am: 25.11.2024 um 20:11 Uhr

dog
dog 26.10.2010 um 11:03:11 Uhr
Goto Top
Zuerst mal empfiehlt sich meistens SimpleXML zu verwenden.

Zum anderen wir diese Zeile geparst
$file = "C:\Programme\Log\topology.xml";
zu
$file = "C:\Programme\Log    opology.xml";   
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.
awagner82
awagner82 26.10.2010 um 11:04:34 Uhr
Goto Top
Edit: Wie bereits gesagt: Falsche Pfadangabe!

Gruß
BadFsaadKl
BadFsaadKl 26.10.2010 um 11:22:50 Uhr
Goto Top
Moin,

ich bekomme zwar jetzt keinen Fehler mehr, daür bekomme ich nicht das gewünscht ergebniss.

Das XML-File wird von einem anderen Programm erzeugt, und ist dynamisch. sprich mit "aufklapp-Menüs"...

wenn ich jetzt das php-file öffne, bekomme ich nur die XML-Variablen in Blockform angezeigt.
Jedoch nicht, was sich dahinter verbirgt.

Ich will letzendlich einfach nur das XML-File auch von extern öffnen können.
Da ich das File nicht wegkopieren kann (weil hier Referenzen auf andere Ort angegeben sind) hab ich einen Webserver auf dem Server installiert, und wollte dieses File einfach in PHP einbinden.
bequiet
bequiet 26.10.2010 um 15:48:18 Uhr
Goto Top
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.
<iframe src = "deinedatei.xml"/>  
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
)
<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>
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. face-smile

MfG
Arano
Arano 26.10.2010 um 17:53:14 Uhr
Goto Top
Hallo.

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');  
?>
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).
Midivirus
Midivirus 26.10.2010 um 22:28:55 Uhr
Goto Top
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
BadFsaadKl
BadFsaadKl 28.10.2010 um 14:56:01 Uhr
Goto Top
Moin,

ja ist nen Apache Webserver.
Der Server, auf dem der Apache läuft, ist in unserem Firmennetzwerk integriert und auch im DNS eingetragen.

Was meinst du mit "Alias" ???

nun ja...
diese XML-Site ist wie gesagt bissle Dynamisch...
auch mit Java...

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.

Sprich er muß ja Alles was das XML-File auslöst, auf dem Webserver anzeigen.
Midivirus
Midivirus 28.10.2010 um 15:03:16 Uhr
Goto Top
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?
BadFsaadKl
BadFsaadKl 28.10.2010 um 15:40:48 Uhr
Goto Top
Doch doch...

das reicht mir auch schon...

wie funktioniert das dann mit diesem Alias ???
Bin hier in diesem Thema net so fit, wie du bestimmt schon mitbekommen haben solltest.

Ja, Soll nur angezeigt werden....
Midivirus
Midivirus 28.10.2010 um 15:46:53 Uhr
Goto Top
Syntax:
<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?
BadFsaadKl
BadFsaadKl 28.10.2010 um 16:14:50 Uhr
Goto Top
Soweit funktioniert es SUPER...
Danke....

Jetzt bekomme folgenden Fehler:


Die XML-Seite kann nicht angezeigt werden
Die XML-Eingabe kann nicht angezeigt werden, wenn Stylesheet XSL verwendet wird. Beheben Sie den Fehler und klicken Sie dann auf Aktualisieren, oder wiederholen Sie den Vorgang später.



Systemfehler: -2146697210.


Die Stylesheetsdatei lieg noch in einem anderen Ordner,...
Muß ich diesen auch noch mit angeben ???

Nur ich kann das Stylesheet XSL nicht deaktivieren, das das XML File wie gesagt automatisch erzeugt wird.
Midivirus
Midivirus 28.10.2010 um 16:18:50 Uhr
Goto Top
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!
<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!
BadFsaadKl
BadFsaadKl 28.10.2010 um 16:42:08 Uhr
Goto Top
Hm...

ja, soweit hab ich auch schon mitgedacht...

Rufe den Link so im Browser auf:

http://server:90/topology/log/topology.xml

habe jetzt den übergeordneten Ordner eingetragen.
	<Directory "C:/Programme/nworks/VIC/Collector/Log">  
		Options Indexes FollowSymLinks Includes ExecCGI
		AllowOverride All
		Order allow,deny
		Allow from all
	</Directory>
	Alias "/topology" "C:\Programme\nworks\VIC\Collector"  

Das XML File liegt in dem Ordner: C:\Programme\nworks\VIC\Collector\Log
das Stylesheet liegt in dem Ordner: C:\Programme\nworks\VIC\Collector\xls

Das ist der Kopf des XML-Files:
<?xml version="1.0" encoding="utf-8"?>  
<?xml-stylesheet type='text/xsl' href='../xsl/topology.xsl'?>  
<topology xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">  
  <Associations />
  <topologyNode id="VMware_Root" type="Folder" name="VMware Infrastructure">  

Ab dem Bereich Associations kommen dann die ganzen Inhalte.
Midivirus
Midivirus 28.10.2010 um 16:58:05 Uhr
Goto Top
Alias auf dieses Verzeichnis:
C:\Programme\nworks\VIC\Collector

<Directory "C:/Programme/nworks/VIC/Collector/Log">   

kannst du so lassen wie es war.

Also klappts?
BadFsaadKl
BadFsaadKl 28.10.2010 um 22:50:23 Uhr
Goto Top
Alias ist momentan auf "C:\Programme\nworks\VIC\Collector" gesetzt.
aber hier kommt obiger Fehler.

Und wenn ich es auf das LOG Verzeichniss mape, kommt der erste Fehler den ich angegeben hatte...

Klappt also net face-sad
Midivirus
Midivirus 04.11.2010 um 21:47:00 Uhr
Goto Top
Für was brauchst du jetzt noch Hilfe?