Help: XML Daten in PHP darstellen

Seite 1 von 1 - Forum: Coding Stuff auf overclockers.at

URL: https://www.overclockers.at/coding-stuff/help_xml_daten_in_php_darstellen_160973/page_1 - zur Vollversion wechseln!


voyager schrieb am 30.03.2006 um 15:33

Ich hab folgendes Problem:

Ich bekomme stündlich ein xml file , zwar mit wechselnden Inhalt, die Struktur ist aber immer gleich und die gleiche Anzahl an Datensätzen , und diese Daten sollen per PHP auf ner Website Grafisch aufgewertet dargestellt werden.

Es geht um Wetterdaten , die auf nem Portal ( Uni) dargestellt werden sollen vielleicht weis jemand rat

zu jedem Iconcode gibt es ein gif file im format icon_xx.gif wobei xx der wert dazu ist
zu jedem winddir_text gibt es ein gif file im format wind_xxx.gif , wobei xxx der wert dazu ist

weis jemand wie man das angehen könnte ?

Code: PHP
<?xml version="1.0" encoding="ISO-8859-1"?>
<forecasts>
 <city>
  <name>Graz</name>
  <forecast>
   <type>hourly</type>
   <date>20060329T11:00:00</date>
   <iconcode>22</iconcode>
   <icontext>leichter Regen</icontext>
   <temp_max>10</temp_max>
   <temp_min>10</temp_min>
   <winddir_value>990</winddir_value>
   <winddir_text>wechselnd</winddir_text>
   <windspeed>9</windspeed>
  </forecast>
  <forecast>
   <type>hourly</type>
   <date>20060329T14:00:00</date>
   <iconcode>1</iconcode>
   <icontext>sonnig</icontext>
   <temp_max>13</temp_max>
   <temp_min>13</temp_min>
   <winddir_value>241</winddir_value>
   <winddir_text>WSW</winddir_text>
   <windspeed>13</windspeed>
  </forecast>
  <forecast>
   <type>hourly</type>
   <date>20060329T17:00:00</date>
   <iconcode>3</iconcode>
   <icontext>heiter</icontext>
   <temp_max>13</temp_max>
   <temp_min>13</temp_min>
   <winddir_value>245</winddir_value>
   <winddir_text>WSW</winddir_text>
   <windspeed>12</windspeed>
  </forecast>
  <forecast>
   <type>hourly</type>
   <date>20060329T20:00:00</date>
   <iconcode>2</iconcode>
   <icontext>wolkenlos</icontext>
   <temp_max>4</temp_max>
   <temp_min>4</temp_min>
   <winddir_value>290</winddir_value>
   <winddir_text>WNW</winddir_text>
   <windspeed>7</windspeed>
  </forecast>
  <forecast>
   <type>daily</type>
   <date>20060329T00:00:00</date>
   <iconcode>5</iconcode>
   <icontext>wolkig</icontext>
   <temp_max>12</temp_max>
   <temp_min>0</temp_min>
   <winddir_value>311</winddir_value>
   <winddir_text>NW</winddir_text>
   <windspeed>11</windspeed>
  </forecast>
  <forecast>
   <type>daily</type>
   <date>20060330T00:00:00</date>
   <iconcode>5</iconcode>
   <icontext>wolkig</icontext>
   <temp_max>15</temp_max>
   <temp_min>-1</temp_min>
   <winddir_value>228</winddir_value>
   <winddir_text>SW</winddir_text>
   <windspeed>8</windspeed>
  </forecast>
  <forecast>
   <type>daily</type>
   <date>20060331T00:00:00</date>
   <iconcode>22</iconcode>
   <icontext>leichter Regen</icontext>
   <temp_max>15</temp_max>
   <temp_min>7</temp_min>
   <winddir_value>261</winddir_value>
   <winddir_text>W</winddir_text>
   <windspeed>17</windspeed>
  </forecast>
  <forecast>
   <type>daily</type>
   <date>20060401T00:00:00</date>
   <iconcode>22</iconcode>
   <icontext>leichter Regen</icontext>
   <temp_max>15</temp_max>
   <temp_min>6</temp_min>
   <winddir_value>258</winddir_value>
   <winddir_text>WSW</winddir_text>
   <windspeed>11</windspeed>
  </forecast>
 </city>
</forecasts>


ica schrieb am 30.03.2006 um 15:43

du kannst entweder serverseitig das ganze per php in html konvertieren oder du gibst xml aus und schreibst ein passendes stylesheet sodass die konvertierung clientseitig passiert.

sag was du willst dann kann ich dir weiterhelfen :)


voyager schrieb am 30.03.2006 um 15:54

was einfacher zu realisieren ist, bin da ganz offen


that schrieb am 30.03.2006 um 18:17

Sieht nach einem klassichen Einsatzfall für XSLT aus.


BuSHidO schrieb am 30.03.2006 um 18:24

oder

http://www.php.net/simplexml


Rektal schrieb am 01.04.2006 um 06:49

SimpleXML gibts nur ab PHP5 .. aber

Ich wuerde aus zwei Gruenden MiniXML ( http://minixml.psychogenic.com/ ) Vorschlagen:

1) schnell und einfach
2) du hast eine sehr einfache Struktur

MiniXML macht folgendes: nimmt das ganze XML, parsed es (mit schwindligen Regex, du brauchst also kein PHP-Modul das XML kann) und du hast eine toArray() Methode, die dir das ganze XML als Array zurueck gibt. Bei deiner Struktur wuerde das Array in etwa so aussehen:

Code:
$data['forecasts']['city']['name'] = 'Graz';
foreach( $data['forecasts']['city']['name']['forecasts'] as $aForecast) {
  echo $aForecast['iconcode'], '<br>';
}

Ist also echt Deppensicher, wenn meine zwei Requirements gegeben sind. Im Endeffekt musst 0 Tau von XML haben, nur wissen wie du mit PHP Arrays umgehst.

Und nebenbei gesagt: wer Smarty verwendet, weiss das Smarty sehr excellten Support fuer Array-Syntax hat. MiniXML ist quasi praedestiniert dazu.

HTH




overclockers.at v4.thecommunity
© all rights reserved by overclockers.at 2000-2025