Supportnet Computer
Planet of Tech

Supportnet / Forum / Skripte(PHP,ASP,Perl...)

xml-Datei auslesen und in tabelle darstellen





Frage

Ich habe eine xml-Datei mit folgendem Inhalt: <?xml version="1.0" encoding="ISO-8859-1"?> <!DOCTYPE sccdata [ <!ELEMENT sccdata (description,row*)> <!ELEMENT description (column*)> <!ELEMENT column (#PCDATA)> <!ATTLIST column col_ref CDATA #REQUIRED dict_ref CDATA #IMPLIED data_type CDATA #IMPLIED unit CDATA #IMPLIED data_size CDATA #IMPLIED data_precision CDATA #IMPLIED > <!ELEMENT row (item*)> <!ELEMENT item (#PCDATA)> <!ATTLIST item key CDATA #REQUIRED value CDATA #IMPLIED > ]> <sccdata> <description> <column col_ref="timestamp" dict_ref="timestamp" data_type="T" unit="" data_size="4" data_precision="1"/> <column col_ref="inverter_id" dict_ref="inverter_id" data_type="J" unit="" data_size="4" data_precision="1"/> <column col_ref="serialnumber" dict_ref="serialnumber" data_type="C" unit="" data_size="32" data_precision="1"/> <column col_ref="status" dict_ref="status" data_type="J" unit="" data_size="4" data_precision="1"/> <column col_ref="dc_power" dict_ref="dc_power" data_type="J" unit="W" data_size="4" data_precision="1"/> <column col_ref="power" dict_ref="power" data_type="J" unit="W" data_size="4" data_precision="1"/> <column col_ref="day_yield" dict_ref="day_yield" data_type="J" unit="kWh" data_size="4" data_precision="0.001"/> <column col_ref="temperature" dict_ref="temperature" data_type="J" unit="°C" data_size="4" data_precision="1"/> <column col_ref="status1" dict_ref="status1" data_type="J" unit="" data_size="4" data_precision="1"/> <column col_ref="dc1_voltage" dict_ref="dc1_voltage" data_type="J" unit="V" data_size="4" data_precision="0.1"/> <column col_ref="dc1_current" dict_ref="dc1_current" data_type="J" unit="A" data_size="4" data_precision="0.01"/> <column col_ref="dc1_power" dict_ref="dc1_power" data_type="J" unit="W" data_size="4" data_precision="1"/> <column col_ref="ac1_voltage" dict_ref="ac1_voltage" data_type="J" unit="V" data_size="4" data_precision="0.1"/> <column col_ref="ac1_current" dict_ref="ac1_current" data_type="J" unit="A" data_size="4" data_precision="0.01"/> <column col_ref="ac1_power" dict_ref="ac1_power" data_type="J" unit="W" data_size="4" data_precision="1"/> <column col_ref="status2" dict_ref="status2" data_type="J" unit="" data_size="4" data_precision="1"/> <column col_ref="dc2_voltage" dict_ref="dc2_voltage" data_type="J" unit="V" data_size="4" data_precision="0.1"/> <column col_ref="dc2_current" dict_ref="dc2_current" data_type="J" unit="A" data_size="4" data_precision="0.01"/> <column col_ref="dc2_power" dict_ref="dc2_power" data_type="J" unit="W" data_size="4" data_precision="1"/> <column col_ref="ac2_voltage" dict_ref="ac2_voltage" data_type="J" unit="V" data_size="4" data_precision="0.1"/> <column col_ref="ac2_current" dict_ref="ac2_current" data_type="J" unit="A" data_size="4" data_precision="0.01"/> <column col_ref="ac2_power" dict_ref="ac2_power" data_type="J" unit="W" data_size="4" data_precision="1"/> <column col_ref="status3" dict_ref="status3" data_type="J" unit="" data_size="4" data_precision="1"/> <column col_ref="dc3_voltage" dict_ref="dc3_voltage" data_type="J" unit="V" data_size="4" data_precision="0.1"/> <column col_ref="dc3_current" dict_ref="dc3_current" data_type="J" unit="A" data_size="4" data_precision="0.01"/> <column col_ref="dc3_power" dict_ref="dc3_power" data_type="J" unit="W" data_size="4" data_precision="1"/> <column col_ref="ac3_voltage" dict_ref="ac3_voltage" data_type="J" unit="V" data_size="4" data_precision="0.1"/> <column col_ref="ac3_current" dict_ref="ac3_current" data_type="J" unit="A" data_size="4" data_precision="0.01"/> <column col_ref="ac3_power" dict_ref="ac3_power" data_type="J" unit="W" data_size="4" data_precision="1"/> </description> <row> <item key="timestamp" value="2008-07-17 12:00:00" /> <item key="inverter_id" value="1" /> <item key="serialnumber" value="1" /> <item key="status" value="3" /> <item key="dc_power" value="94" /> <item key="power" value="54" /> <item key="day_yield" value="4.891" /> <item key="temperature" value="23" /> <item key="status1" value="3" /> <item key="dc1_voltage" value="462.1" /> <item key="dc1_current" value="0.21" /> <item key="dc1_power" value="94" /> <item key="ac1_voltage" value="231.8" /> <item key="ac1_current" value="0.27" /> <item key="ac1_power" value="54" /> <item key="status2" value="0" /> <item key="dc2_voltage" value="0" /> <item key="dc2_current" value="0" /> <item key="dc2_power" value="0" /> <item key="ac2_voltage" value="0" /> <item key="ac2_current" value="0" /> <item key="ac2_power" value="0" /> <item key="status3" value="0" /> <item key="dc3_voltage" value="0" /> <item key="dc3_current" value="0" /> <item key="dc3_power" value="0" /> <item key="ac3_voltage" value="0" /> <item key="ac3_current" value="0" /> <item key="ac3_power" value="0" /> </row> Wie man sich denken kann wiederholten sich die Daten nur mit anderen Werten und nem anderen Timestamp. Meine Frage nun: Kann mir wer helfen diese Datei per php(xsl) auszuwerten und in ner tabelle mit überschriften auszugeben? Ist wirklich dringend da das Unternehmen in dem ich arbeite diese Daten online stellen will und zwar so schnell wie möglich. Vielen Dank im vorrau, R

Antwort 1 von Computerfreaki

Hier ist mal der Anfang für dein Projekt:
http://homepage-total.de/php/xml-datei.php

Antwort 2 von Computerfreaki

Und hier findest du was für fortgeschrittene:
http://www.drweb.de/php/php-xml.shtml

Antwort 3 von Reavermaster

Ja das ist ja alles gut und schön ... ist ja nicht so das ich danach nicht schon selbst gesucht hätte aber das problem ist das bei den meisten xml-dateien die werte so stehen:

<bezeichnung>WERT</bezeichnung>

damit wäre es einfach alles auszulesen ... aber bei mir ist es halt so das das alles so da steht:

<item key="bezeichnung" value="WERT" />

Und ich brauche halt den WERT ... jemand ne idee wie man das verwirklichen könnte?

Antwort 4 von son_quatsch

Wenn es dir nur um die Werte geht, hilft dir evt. folgender Code weiter:

<?php

	$h1= fopen( 'xml.xml', 'r' ) or die( 'Konnte Datei nicht öffnen' );
	$sDatei;
	while ( !feof( $h1) ) $sDatei.= fgets( $h1, 4096 );
	fclose( $h1 );

	preg_match_all( '#key="([^"]+)"[^v]*value="([^"]*)"#i', $sDatei, $aValue );

	echo '<table>';
	for ( $i1= 0; $i1< count( $aValue[1] ); $i1++ ) echo '<tr>
		<td>'. $aValue[1][$i1]. '</td>
		<td>'. $aValue[2][$i1]. '</td>
	</tr>';
	echo '</table>';

?>


Antwort 5 von Reavermaster

Ja es geht mit in der Hinsicht um die Werte das ich damit später auch arbeiten will ... es wird halt ne auswertung für ne photovoltaik-anlage auf dem dach der lagerhalle des unternehmens. heißt also auch den gesamtbetrag berechnen hinsichtlich leistung usw.

also wäre gut wenn der das in arrays auseinanderpflücken würde oder sowas in der art ... ein array pro timestamp oder sowas ...

ich habe leider noch zu viel anderes zu tun als das ich mich komplett auf dieses projekt einschießen könnte. deswegen bitte ich ja um eure hilfe :-) .

Schon mal vielen herzlichen dank für die antworten.

Antwort 6 von Reavermaster

Ja es geht mit in der Hinsicht um die Werte das ich damit später auch arbeiten will ... es wird halt ne auswertung für ne photovoltaik-anlage auf dem dach der lagerhalle des unternehmens. heißt also auch den gesamtbetrag berechnen hinsichtlich leistung usw.

also wäre gut wenn der das in arrays auseinanderpflücken würde oder sowas in der art ... ein array pro timestamp oder sowas ...

ich habe leider noch zu viel anderes zu tun als das ich mich komplett auf dieses projekt einschießen könnte. deswegen bitte ich ja um eure hilfe :-) .

Schon mal vielen herzlichen dank für die antworten.

Antwort 7 von Computerfreaki

Und wenn du die XML-Datei einfach lokal ausliest und dann mit PHP in die MySQL-Tabelle einträgst

Hier ist ne Anleitung:
http://www.uzi-web.de/parser/parser_toc.htm

Ich möchte kostenlos eine Frage an die Mitglieder stellen:


Ähnliche Themen:


Suche in allen vorhandenen Beiträgen: