tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
4
ZUGRIFFE
528
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Sarah Sarah ist offline Mitglied Bronze
    Registriert seit
    May 2002
    Beiträge
    31
    Guten Tag!

    Lang lang ist das letzte Problem her - aber nun habe ich doch ein Fehler, den ich nicht ausfindig machen kann. Vielleich sieht es ja einer von euch
    Es geht um SimpleXML - bzw. um die Datenverarbetiung von XML Dateien mit Hilfe von SimpleXML und letztlich die Ausgabe der Nodes...

    Zuerst mal das XML Dokument:

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    
    <weather-forecast>
    <location altitude="1377">Somewhere</location>
     
    <description lang="de">
    Über das Wochenende hinaus sorgt kräftiger Hochdruckeinfluss für ungetrübtes Schönwetter. Es gibt Sonnenschein pur von früh bis spät an einem zumeist wolkenlosen Himmel. Alle Sonnenanbeter kommen voll und ganz auf ihre Rechnung. Das Schönwetter bleibt uns in jedem Fall bis Montag uneingeschränkt erhalten. Danach ist die weitere Wetterentwicklung noch sehr unsicher.
    </description>
     
    <description lang="en">
    The weather will improve. A strong high-pressure area will settle in over the Alpine regions and will determine the weather over the upcoming days. Sun worshipper will enjoy perfect conditions. The winter sporting conditions, however, will be perfect as well, skiers will enjoy fresh powder snow. When this period of beautiful weather will come to an end, cannot be foreseen yet.
    </description>
     
    <forecast date="2008-02-08+01:00">
    <symbol>1</symbol>
    <temp-night>-11</temp-night>
    <temp-day>-1</temp-day>
    <hours-of-sunshine>7</hours-of-sunshine>
    <below-zero-border>1500</below-zero-border>
    <rainfall-risk-am>0</rainfall-risk-am>
    <rainfall-risk-pm>0</rainfall-risk-pm>
    </forecast>
     
    <forecast date="2008-02-09+01:00">
    <symbol>1</symbol>
    <temp-night>-11</temp-night>
    <temp-day>1</temp-day>
    <hours-of-sunshine>7</hours-of-sunshine>
    <below-zero-border>1700</below-zero-border>
    <rainfall-risk-am>0</rainfall-risk-am>
    <rainfall-risk-pm>0</rainfall-risk-pm>
    </forecast>
     
    <forecast date="2008-02-10+01:00">
    <symbol>1</symbol>
    <temp-night>-9</temp-night>
    <temp-day>1</temp-day>
    <hours-of-sunshine>7</hours-of-sunshine>
    <below-zero-border>1600</below-zero-border>
    <rainfall-risk-am>0</rainfall-risk-am>
    <rainfall-risk-pm>0</rainfall-risk-pm>
    </forecast>
     
    <forecast date="2008-02-11+01:00">
    <symbol>1</symbol>
    <temp-night>-11</temp-night>
    <temp-day>2</temp-day>
    <hours-of-sunshine>7</hours-of-sunshine>
    <below-zero-border>1800</below-zero-border>
    <rainfall-risk-am>0</rainfall-risk-am>
    <rainfall-risk-pm>0</rainfall-risk-pm>
    </forecast>
     
    <forecast date="2008-02-12+01:00">
    <symbol>4</symbol>
    <temp-night>-7</temp-night>
    <temp-day>1</temp-day>
    <hours-of-sunshine>5</hours-of-sunshine>
    <below-zero-border>1700</below-zero-border>
    <rainfall-risk-am>0</rainfall-risk-am>
    <rainfall-risk-pm>40</rainfall-risk-pm>
    </forecast>
    </weather-forecast>


    Nnun hab ich mir das so gedacht:
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    
    <?
            $xml = simplexml_load_file($filename);  //$filename wird korrekt geladen -> print_r getestet
            if($xml) {      
                                                        
            foreach($xml->forecast as $forecast) { 
    ?> 
              <br>
                <table width="60%" border="0" cellspacing="0" cellpadding="0">
                  <tr> 
                    <td width="48%"><strong><? echo $forcast->date ?></strong></td>
                    <td width="52%"></td>
                  </tr>
                  <tr> 
                    <td><strong>&deg;C Nacht/Tag</strong></td>
                    <td><div align="right"><? echo $forecast->temp-night ?>/<? echo $forecast->temp-day ?></div></td>
                  </tr>
                  <tr> 
                    <td><strong>Niederschlagsrisiko <br>
                      Vor/Nachmittag (in %)</strong></td>
                    <td><div align="right"><? echo $forecast->rainfall-risk-am ?>/<? echo $forecast->rainfall-risk-pm ?></div></td>
                  </tr>
                  <tr> 
                    <td><strong>Sonnenstunden</strong></td>
                    <td><div align="right"><? echo $forecast->hours-of-sunshine ?></div></td>
                  </tr>
                  <tr> 
                    <td><strong>Nullgradgrenze</strong></td>
                    <td><div align="right"><? echo $forecast->below-zero-border?></div></td>
                  </tr>
                </table>
                <?
                    $cnt = $cnt + 1;        
                    }   
                }
                ?>


    Das Problem:
    Ich kann auf keinen einzigen Knoten von "forecast" zugreifen - alle Eigenschaften haben den Wert "0". Auf der anderen Seite kann ich aber korrekt auf das "description" mittels
    Code :
    1
    
    echo($xml->description[0]);
    zugreifen.

    Ist sicher nur ein kleiner Fehler bzw. Denkfehler - aber ich komme einfach nicht darauf
    Hoffe ihr könnt mir helfen!

    Liebe Grüße,
    Sarah
     

  2. #2
    Avatar von Flex
    Flex Flex ist offline (aka Felix Jacobi)
    tutorials.de Moderator
    Registriert seit
    Nov 2001
    Ort
    Wuppertal
    Beiträge
    5.295
    Blog-Einträge
    65
    Das Problem ist, das PHP anscheinend keine Gedankenstriche in Objektnamen zulässt.
    Ergo müssest du es so machen:

    PHP-Code:
    <?php
            $xml 
    simplexml_load_file('test.xml');  //$filename wird korrekt geladen -> print_r getestet
            
    if($xml) {        
                                                        
            foreach(
    $xml->forecast as $forecast) { 
    ?> 
              <br>
                <table width="60%" border="0" cellspacing="0" cellpadding="0">
                  <tr> 
                    <td width="48%"><strong><?php echo $forecast['date']; ?></strong></td>
                    <td width="52%"></td>
                  </tr>
                  <tr> 
                    <td><strong>&deg;C Nacht/Tag</strong></td>
                    <td><div align="right"><?php echo $forecast->{'temp-night'}.'/'.$forecast->{'temp-day'}; ?></div></td>
                  </tr>
                  <tr> 
                    <td><strong>Niederschlagsrisiko <br>
                      Vor/Nachmittag (in %)</strong></td>
                    <td><div align="right"><?php echo $forecast->{'rainfall-risk-am'}.'/'.$forecast->{'rainfall-risk-pm'}; ?></div></td>
                  </tr>
                  <tr> 
                    <td><strong>Sonnenstunden</strong></td>
                    <td><div align="right"><?php echo $forecast->{'hours-of-sunshine'}; ?></div></td>
                  </tr>
                  <tr> 
                    <td><strong>Nullgradgrenze</strong></td>
                    <td><div align="right"><?php echo $forecast->{'below-zero-border'}; ?></div></td>
                  </tr>
                </table>
    <?
      $cnt 
    $cnt 1;        
      }    
    }
    ?>
     
    KIDS Kinderbetreuungsdienst
    Xing

    "When you play the game of thrones, you win or you die. There is no middle ground."
    by Cersei Lannister in "A Game Of Thrones"

  3. #3
    Sarah Sarah ist offline Mitglied Bronze
    Registriert seit
    May 2002
    Beiträge
    31
    Und wieder etwas gelernt!

    Vielen Dank für deine Hilfe und die Aufklärung - funktioniert wunderbar.
     

  4. #4
    Sarah Sarah ist offline Mitglied Bronze
    Registriert seit
    May 2002
    Beiträge
    31
    Hallo!

    Eine kleine Frage würde ich noch haben; wie kann ich auf das Datum - welches ja kein node darstellt, sondern ein Argument des Forecast-Knoten ist - zugreifen?
    Habe leider keine Möglichkeit gefunden.
     

  5. #5
    Avatar von Flex
    Flex Flex ist offline (aka Felix Jacobi)
    tutorials.de Moderator
    Registriert seit
    Nov 2001
    Ort
    Wuppertal
    Beiträge
    5.295
    Blog-Einträge
    65
    PHP-Code:
                  <tr> 
                    <td width="48%"><strong><?php echo $forecast['date']; ?></strong></td>
                    <td width="52%"></td>
                  </tr>
    So hat es bei mir funktioniert.
     
    KIDS Kinderbetreuungsdienst
    Xing

    "When you play the game of thrones, you win or you die. There is no middle ground."
    by Cersei Lannister in "A Game Of Thrones"

Ähnliche Themen

  1. Alternative zu simplexml
    Von karlihno im Forum PHP
    Antworten: 1
    Letzter Beitrag: 18.10.09, 03:24
  2. simpleXML
    Von wachteldonk im Forum PHP
    Antworten: 1
    Letzter Beitrag: 16.08.09, 18:16
  3. SimpleXML
    Von PHPGuru86 im Forum PHP
    Antworten: 2
    Letzter Beitrag: 31.03.09, 21:56
  4. PHP & SimpleXML
    Von PersonalDemon im Forum PHP
    Antworten: 5
    Letzter Beitrag: 04.10.07, 14:36
  5. SimpleXML und DTD
    Von bandsite im Forum PHP
    Antworten: 1
    Letzter Beitrag: 03.08.06, 20:49