Seite 1 von 1

Daten aus XML auslesen und per PHP in Website einfügen HILFE

Verfasst: 24.06.2011, 09:53
von johnny44
Hallo,
ich möchte Daten aus folgender XML auslesen und auf meiner Website einfügen.
XML: https://www.pegelonline.wsv.de/svgz/peg ... de_neu.xml
Es handelt sich um Wasserstände verschiedener Flüsse von PegelOnline.
Ich möchte aus dem XML-File nur einen Wasserstand auslesen z.B. nur ELBE in DRESDEN mit Datum/Zeit und Wasserstand und dann als Text auf meiner Website einfügen

Ich hab schon Stunden probiert und bekomms einfach nicht hin, bin mit PHP und XML nicht so vertraut.

Kann mir jemand helfen?

P.S. Ja es ist erlaubt, diese Daten auszulesen siehe https://www.pegelonline.wsv.de/webservice/ueberblick

Verfasst:
von

Verfasst: 24.06.2011, 11:34
von Parus
Hallo,

warum benutzt Du nicht einfach die API, die auf PegelOnline u.a. für php zur Verfügung gestellt wird? Das dürfte die ganze Sache vereinfachen.

Dokumentation:
https://www.pegelonline.wsv.de/webservice/guideAkt#php

Verfasst: 24.06.2011, 12:26
von devolo01
Ein wenig mit PHP solltest dich schon auseinandersetzen.

Diese Funktion sollte eigentlich den Problem lösen.

https://de3.php.net/manual/de/function. ... struct.php

oder eben, API was wohl ein wenig SOAP Kenntnisse erfordert.

VG

Verfasst: 24.06.2011, 12:37
von johnny44
Ja, mit der API hab ich mich auch schon rumgeschlagen, leider habe ich es nicht hinbekommen.
@devolo01: Danke für deinen Link, das probiere ich mal aus, vielleicht klappts.

Verfasst: 25.06.2011, 09:55
von tojas
Man könnte das auch mit cURL machen: https://www.higherpass.com/php/Tutorial ... Simplexml/

Re: Daten aus XML auslesen und per PHP in Website einfügen H

Verfasst: 25.06.2011, 11:23
von Abraxas
johnny44 hat geschrieben:Hallo,
ich möchte Daten aus folgender XML auslesen und auf meiner Website einfügen.
XML: https://www.pegelonline.wsv.de/svgz/peg ... de_neu.xml
Es handelt sich um Wasserstände verschiedener Flüsse von PegelOnline.
Ich möchte aus dem XML-File nur einen Wasserstand auslesen z.B. nur ELBE in DRESDEN mit Datum/Zeit und Wasserstand und dann als Text auf meiner Website einfügen

Ich hab schon Stunden probiert und bekomms einfach nicht hin, bin mit PHP und XML nicht so vertraut.

Kann mir jemand helfen?

P.S. Ja es ist erlaubt, diese Daten auszulesen siehe https://www.pegelonline.wsv.de/webservice/ueberblick
Sinnvollerweise würde ich die XML Daten einlesen und in eine mySQL Datenbank übertragen und dies als CRON Job installieren.
Der gefilterte Zugriff auf die Datenbank erlaubt dann auch eine statistische Auswertung (Tabelle und/oder Graphik) Der Aktuelle Wert kann über eine simple PHP API graphisch oder als Text dargestellt werden.
Ohne solide PHP Kenntnisse ist dies allerdings sehr schwierig
:cry:

Verfasst: 26.06.2011, 15:48
von johnny44
Sinnvollerweise würde ich die XML Daten einlesen und in eine mySQL Datenbank übertragen und dies als CRON Job installieren.
Der gefilterte Zugriff auf die Datenbank erlaubt dann auch eine statistische Auswertung (Tabelle und/oder Graphik) Der Aktuelle Wert kann über eine simple PHP API graphisch oder als Text dargestellt werden.
Ohne solide PHP Kenntnisse ist dies allerdings sehr schwierig
So kompliziert über eine Datenbank braucht es nicht sein. Es reicht ein simpler Aufruf per PHP, der den aktuellen Wert als Text ausgibt.

Leider hab ichs bisher nicht hinbekommen. Kennt jemand eine Plattform, wo man gegen etwas Kohle einen Programmierer beauftragen kann, das sollte doch für einen der sich mit PHP etwas auskennt kein Problem sein.

Verfasst: 26.06.2011, 18:24
von Abraxas
johnny44 hat geschrieben:
Sinnvollerweise würde ich die XML Daten einlesen und in eine mySQL Datenbank übertragen und dies als CRON Job installieren.
Der gefilterte Zugriff auf die Datenbank erlaubt dann auch eine statistische Auswertung (Tabelle und/oder Graphik) Der Aktuelle Wert kann über eine simple PHP API graphisch oder als Text dargestellt werden.
Ohne solide PHP Kenntnisse ist dies allerdings sehr schwierig
So kompliziert über eine Datenbank braucht es nicht sein. Es reicht ein simpler Aufruf per PHP, der den aktuellen Wert als Text ausgibt.

Leider hab ichs bisher nicht hinbekommen. Kennt jemand eine Plattform, wo man gegen etwas Kohle einen Programmierer beauftragen kann, das sollte doch für einen der sich mit PHP etwas auskennt kein Problem sein.
Bitte kontaktiere mich per PM, ich bin gerne bereit gegen eine angemessene und günstige Bezahlung die API zu programmieren.
Ich müsste folgendes vorab wissen:
- Was ist die Hostumgebung (UNIX / WIN, welche Version PHP, etc.)?
- Dedicated / Virtual Server?

Verfasst: 27.06.2011, 08:11
von johnny44
Ich müsste folgendes vorab wissen:
- Was ist die Hostumgebung (UNIX / WIN, welche Version PHP, etc.)?
- Dedicated / Virtual Server?
PHP 5.3, einfaches Hosting-Paket bei Goneo.
Für was brauchts du diese Angaben? Es müsste doch mit 2-3 Zeilen PHP-Code funktionieren um Daten aus einer XML-Datei auszulesen.

Bei der ECB-XML-Datei zum Beispiel lese ich den Euro/Dollar-Kurs mit drei Zeilen PHP aus, da ist es genau das gleiche. nur dass da die XML-Datei einfacher aufgebaut ist.

Code: Alles auswählen

<?php
$xref = simplexml_load_file&#40;'http&#58;//www.ecb.europa.eu/stats/eurofxref/eurofxref-daily.xml'&#41;;
$nodes = $xref->xpath&#40;'.//*&#91;@currency="USD"&#93;'&#41;;
echo '1 Euro =&nbsp;'.$nodes&#91;0&#93;&#91;'rate'&#93;.'&nbsp;US-Dollar';
?>
Also müsste es doch auch bei PEGELONLINE mit ein paar Zeilen funktionieren. Doch leider ist diese XML-Datei komplizierter aufgebaut

Verfasst: 27.06.2011, 16:44
von Abraxas
johnny44 hat geschrieben:
Ich müsste folgendes vorab wissen:
- Was ist die Hostumgebung (UNIX / WIN, welche Version PHP, etc.)?
- Dedicated / Virtual Server?
PHP 5.3, einfaches Hosting-Paket bei Goneo.
Für was brauchts du diese Angaben? Es müsste doch mit 2-3 Zeilen PHP-Code funktionieren um Daten aus einer XML-Datei auszulesen.

Bei der ECB-XML-Datei zum Beispiel lese ich den Euro/Dollar-Kurs mit drei Zeilen PHP aus, da ist es genau das gleiche. nur dass da die XML-Datei einfacher aufgebaut ist.

Code: Alles auswählen

<?php
$xref = simplexml_load_file&#40;'http&#58;//www.ecb.europa.eu/stats/eurofxref/eurofxref-daily.xml'&#41;;
$nodes = $xref->xpath&#40;'.//*&#91;@currency="USD"&#93;'&#41;;
echo '1 Euro =&nbsp;'.$nodes&#91;0&#93;&#91;'rate'&#93;.'&nbsp;US-Dollar';
?>
Also müsste es doch auch bei PEGELONLINE mit ein paar Zeilen funktionieren. Doch leider ist diese XML-Datei komplizierter aufgebaut
Nette Art um Hilfe zu fragen ... :o

check this out: https://www.vxnic.com/test/ (incl. html 36 lines)

Code: Alles auswählen

<?php
$out = '';
function _PRS&#40;$str&#41; &#123;
	return&#40;iconv&#40;"UTF-8","ISO-8859-1//TRANSLIT",$str&#41;&#41;;
&#125;
try &#123;
	$xref = simplexml_load_file&#40;'http&#58;//www.pegelonline.wsv.de/svgz/pegelstaende_neu.xml'&#41;;
	foreach &#40;$xref->table->gewaesser as $value&#41; &#123;
		if &#40;_PRS&#40;$value->name&#41; == 'ELBE'&#41; &#123;
			foreach &#40;$value->item as $items&#41; &#123;
				if &#40;_PRS&#40;$items->pegelname&#41; == 'DRESDEN'&#41; &#123;
					$out .= "<table>\n";
					$out .= "<tr><td>Pegelname&#58;</td><td>"._PRS&#40;$items->pegelname&#41;."</td></tr>\n";
                    $out .= "<tr><td>Messwert&#58;</td><td>"._PRS&#40;$items->messwert&#41;."</td></tr>\n";
                    $out .= "<tr><td>km&#58;</td><td>"._PRS&#40;$items->km&#41;."</td></tr>\n";
                    $out .= "<tr><td>pnp&#58;</td><td>"._PRS&#40;$items->pnp&#41;."</td></tr>\n";
                    $out .= "<tr><td>Tendenz&#58;</td><td>"._PRS&#40;$items->tendenz&#41;."</td></tr>\n";
                    $out .= "<tr><td>Datum&#58;</td><td>"._PRS&#40;$items->datum&#41;."</td></tr>\n";
                    $out .= "<tr><td>Uhrzeit&#58;</td><td>"._PRS&#40;$items->uhrzeit&#41;."</td></tr>\n";					
					$out .= "</table>\n";
					break;
				&#125;
			&#125;
			break;		 
		&#125;
	&#125; 
	if &#40;$out == ''&#41; &#123;
	  $out = "No Data";
	&#125;
&#125; catch &#40;Exception $e&#41; &#123;
	$out = "No Data";
&#125; 
echo&#40;$out&#41;;
?>
[/code]

Verfasst: 27.06.2011, 16:55
von methusalem
Klarer Fall von "zu nett für diese Welt" :roll:

Verfasst: 27.06.2011, 17:54
von net(t)worker
johnny44 hat geschrieben:.... Es reicht ein simpler Aufruf per PHP, der den aktuellen Wert als Text ausgibt....
klar, wenn du das ganze nun nur als Übung machst und eh nicht vorhast das auf deiner Webseite einzubauen.... oder du von vornherein weist das du eh nie viel Traffic haben wirst.... dann kannste natürlich bei jedem Seitenaufruf die Daten aktuell auslesen.... :roll:

Verfasst: 28.06.2011, 13:40
von johnny44
@net(t)worker
... oder du von vornherein weist das du eh nie viel Traffic haben wirst....
ist nicht viel traffic, ist nur für unsere Vereins-Website


@Abraxas
Wahnsinn, das ist aber nett. Kann ich dir irgendwie eine kleine Aufmerksamkeit zukommen lassen??

P.S. nur zur Info, funktioniert nicht mit PHP 5.3, nur mit 5.2, hab den Server wieder auf PHP 5.2 umgestellt und es hat geklappt. DANKE DANKE

Verfasst: 07.07.2011, 13:26
von fabschu
Abraxas hat geschrieben:
johnny44 hat geschrieben:
check this out: https://www.vxnic.com/test/ (incl. html 36 lines)

Code: Alles auswählen

<?php
$out = '';
function _PRS&#40;$str&#41; &#123;
	return&#40;iconv&#40;"UTF-8","ISO-8859-1//TRANSLIT",$str&#41;&#41;;
&#125;
try &#123;
	$xref = simplexml_load_file&#40;'http&#58;//www.pegelonline.wsv.de/svgz/pegelstaende_neu.xml'&#41;;
	foreach &#40;$xref->table->gewaesser as $value&#41; &#123;
		if &#40;_PRS&#40;$value->name&#41; == 'ELBE'&#41; &#123;
			foreach &#40;$value->item as $items&#41; &#123;
				if &#40;_PRS&#40;$items->pegelname&#41; == 'DRESDEN'&#41; &#123;
					$out .= "<table>\n";
					$out .= "<tr><td>Pegelname&#58;</td><td>"._PRS&#40;$items->pegelname&#41;."</td></tr>\n";
                    $out .= "<tr><td>Messwert&#58;</td><td>"._PRS&#40;$items->messwert&#41;."</td></tr>\n";
                    $out .= "<tr><td>km&#58;</td><td>"._PRS&#40;$items->km&#41;."</td></tr>\n";
                    $out .= "<tr><td>pnp&#58;</td><td>"._PRS&#40;$items->pnp&#41;."</td></tr>\n";
                    $out .= "<tr><td>Tendenz&#58;</td><td>"._PRS&#40;$items->tendenz&#41;."</td></tr>\n";
                    $out .= "<tr><td>Datum&#58;</td><td>"._PRS&#40;$items->datum&#41;."</td></tr>\n";
                    $out .= "<tr><td>Uhrzeit&#58;</td><td>"._PRS&#40;$items->uhrzeit&#41;."</td></tr>\n";					
					$out .= "</table>\n";
					break;
				&#125;
			&#125;
			break;		 
		&#125;
	&#125; 
	if &#40;$out == ''&#41; &#123;
	  $out = "No Data";
	&#125;
&#125; catch &#40;Exception $e&#41; &#123;
	$out = "No Data";
&#125; 
echo&#40;$out&#41;;
?>
[/code]
Hab deinen Code mal bei mir eingebunden und als php-datei aufn webserver gelegt. passiert aber nichts beim laden, die datei bleibt leer. Kannst du mir bitte sagen woran das liegt? Danke vielmals