"Christmas - the time to fix the computers of your loved ones" « Lord Wyrm

Help: XML Daten in PHP darstellen

voyager 30.03.2006 - 15:33 1264 5
Posts

voyager

kühler versilberer :)
Avatar
Registered: Nov 2001
Location: Stmk/Austria
Posts: 3848
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

hmm
Avatar
Registered: Jul 2002
Location: Graz
Posts: 9822
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

kühler versilberer :)
Avatar
Registered: Nov 2001
Location: Stmk/Austria
Posts: 3848
was einfacher zu realisieren ist, bin da ganz offen

that

Moderator
Hoffnungsloser Optimist
Avatar
Registered: Mar 2000
Location: MeidLing
Posts: 11340
Sieht nach einem klassichen Einsatzfall für XSLT aus.

BuSHidO

ist süß
Registered: Jul 2001
Location: galaxie
Posts: 542

Rektal

Here to stay
Registered: Dec 2002
Location: Inside
Posts: 4459
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
Kontakt | Unser Forum | Über overclockers.at | Impressum | Datenschutz