Ankündigung

Einklappen
Keine Ankündigung bisher.

xml in php einlesen

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • xml in php einlesen

    Hallo,
    ich möchte eine externe Date in eine php-Datei einlesen:

    Code:
    <?php
    
    $datei = "http://xml.info-lotto24.de/parsed_xmls/ejp_drawinfo.xml";
    
              $Response = @simplexml_load_file($datei) or
              die ("Fehler beim Laden der Datei: ".$datei."\n");
    
              print_r($Response);
    
    ?>
    diese sieht so aus:
    Code:
    <draw-info><product>EJP</product><date>2016-08-19T18:00:00Z</date><day>Friday</day><draw-id>354993136</draw-id><winning-numbers><number>22</number><number>33</number><number>42</number><number>43</number><number>46</number><number type="EURO_NUMBER">6</number><number type="EURO_NUMBER">10</number></winning-numbers><winning-quotas><quota type="WC_1" prize="0.00 EUR" winnerNumber="0"/><quota type="WC_2" prize="1,186,893.40 EUR" winnerNumber="1"/><quota type="WC_3" prize="139,634.50 EUR" winnerNumber="3"/><quota type="WC_4" prize="8,727.10 EUR" winnerNumber="16"/><quota type="WC_5" prize="358.00 EUR" winnerNumber="351"/><quota type="WC_6" prize="122.30 EUR" winnerNumber="799"/><quota type="WC_7" prize="92.70 EUR" winnerNumber="903"/><quota type="WC_8" prize="31.30 EUR" winnerNumber="13808"/><quota type="WC_9" prize="23.10 EUR" winnerNumber="18125"/><quota type="WC_10" prize="15.70 EUR" winnerNumber="38044"/><quota type="WC_11" prize="14.80 EUR" winnerNumber="73261"/><quota type="WC_12" prize="9.70 EUR" winnerNumber="274127"/></winning-quotas></draw-info>
    ausgelesen sieht es dann so aus:
    Code:
    SimpleXMLElement Object ( [product] => EJP [date] => 2016-08-26T18:00:00Z [day] => Friday [draw-id] => 355813136 [winning-numbers] => SimpleXMLElement Object ( [number] => Array ( [0] => 4 [1] => 8 [2] => 9 [3] => 33 [4] => 43 [5] => 5 [6] => 9 ) ) )
    wie bekomme ich dies vernünftig angezeigt in einer Tabelle?
    http://www.krassevideos.net
    http://www.mein-neues-iphone.de
    http://www.webkatalog.es

  • #2
    wenn ich es so mache, dann zeigt es mir nichts an:
    Code:
    <?php
    $datei = "http://xml.info-lotto24.de/parsed_xmls/ejp_drawinfo.xml";
    
     $Response = @simplexml_load_file($datei) or
         die ("Fehler beim Laden der Datei: ".$datei."\n");
    
        $laufebis = count($draw-info->winning-numbers->number);
    
    echo "\t<ul>\n";
    
    for ($laufe = 0; $laufe < $laufebis; $laufe++) {
    
        echo "\t<li>";
    
        foreach ($draw-info->winning-numbers->number[$laufe]->
        attributes() as $alpha) {
    
        echo $alpha." ";
        }
      echo "</li>\n";
    }
    echo "\t</ul>\n";
    
    ?>
    aus: http://www.seo-welten.de/webcoding/xml-attribute.htm
    http://www.krassevideos.net
    http://www.mein-neues-iphone.de
    http://www.webkatalog.es

    Kommentar


    • #3
      Zitat von tonkelz Beitrag anzeigen
      wenn ich es so mache, dann zeigt es mir nichts an
      Da stelle das error_reporting und display_errors auf Deinem Entwicklungssystem korrekt ein!

      https://eval.in/629999 zeigt jedenfalls nen Fehler an. Ohne das jetzt genuer untersucht zu haben greifst Du auf ein XML-Element zu das es nicht gibt. Gleiche es an die Gegebenheiten im vorliegenden XML an.
      PHP-Manual ¡ mysql_* ist veraltet ¡ Debugging: Finde DEINE Fehler selbst ¡ Passwort-Hashing ¡ Prepared Statements

      Kommentar


      • #4
        Ich hab mir Deinen Code nochmal genauer angeschaut. Ich glaub Grundlagen lernen ist heutzutag mächtig out wa? Das ist prinzipiell kein gültiger PHP-Code.

        Wie man auf elemente zugreift die kein gültiges PHP-Word sind steht im Manual zu SimpleXML. {'winning-numbers'} wär korrekt

        und foreach ist hier definitiv die bessere Wahl.

        Außerdem ist $draw keine bekannte Variable und die korrekt zu verwendende verweist direct in das Root-Element ('info' in Deinem Fall) und nicht zum Dokument drüber.
        PHP-Manual ¡ mysql_* ist veraltet ¡ Debugging: Finde DEINE Fehler selbst ¡ Passwort-Hashing ¡ Prepared Statements

        Kommentar


        • #5
          Wer will schon Handbücher lesen in der heutigen Zeit.
          Gimme code please...

          PHP-Code:
          $file "http://xml.info-lotto24.de/parsed_xmls/ejp_drawinfo.xml";

          try {
              
          $xml = @simplexml_load_file($file);
          }catch (
          Exception $e) {
              echo 
          "Error bad xml";
          }

          $number = (array) $xml->{'winning-numbers'}->number;

          echo 
          '<ol>';
          foreach (
          $number as $value) {
              echo 
          '<li>' $value '</li>';    
          }
          echo 
          '</ol>'

          Kommentar


          • #6
            Zitat von Ulfikado Beitrag anzeigen
            IIch glaub Grundlagen lernen ist heutzutag mächtig out wa?
            Ne ,nur sehr mühsam. Aber wo finde ich ein gutes Tutorial auf deutsch?

            Zitat von protextix
            Wer will schon Handbücher lesen in der heutigen Zeit.
            Gimme code please...
            Danke schön für die Hilfe


            http://www.krassevideos.net
            http://www.mein-neues-iphone.de
            http://www.webkatalog.es

            Kommentar


            • #7
              Zitat von protestix Beitrag anzeigen

              PHP-Code:
              $file "http://xml.info-lotto24.de/parsed_xmls/ejp_drawinfo.xml";

              try {
              $xml = @simplexml_load_file($file);
              }catch (
              Exception $e) {
              echo 
              "Error bad xml";
              }

              $number = (array) $xml->{'winning-numbers'}->number;

              echo 
              '<ol>';
              foreach (
              $number as $value) {
              echo 
              '<li>' $value '</li>';
              }
              echo 
              '</ol>'
              Nur mal Nachzuvollziehen:

              $number entspricht <number>4</number>
              {'winning-numbers'}->number bezieht sich also auf
              -<winning-numbers>
              <number>4</number>

              wenn ich zusätzlich <winning-quotas> <quota type="WC_2" prize="614,363.80 EUR" winnerNumber="2"/>
              ausgeben möchte muss ich es dann wie machen?

              Kann mir jemand die Zusammenhänge erklären oder ein gutes Tutorial dazu angeben auf deutsch?
              http://www.krassevideos.net
              http://www.mein-neues-iphone.de
              http://www.webkatalog.es

              Kommentar


              • #8
                Zitat von tonkelz Beitrag anzeigen

                Nur mal Nachzuvollziehen:

                $number entspricht <number>4</number>
                {'winning-numbers'}->number bezieht sich also auf
                -<winning-numbers>
                <number>4</number>
                Nein, nicht ganz, weil da ja mehr als ein mal <number> vorkommt.
                Daher die Umwandlung in ein Array.
                Aber probier es selbst mal aus mit
                PHP-Code:
                print_r($xml->{'winning-numbers'}->number);
                print_r($number
                kannst du dir die Inhalte anzeigen lassen.

                http://php.net/manual/de/simplexml.examples.php



                Kommentar


                • #9
                  Zitat von protestix Beitrag anzeigen
                  Nein, nicht ganz, weil da ja mehr als ein mal <number> vorkommt.
                  Daher die Umwandlung in ein Array.
                  Naja, viele Wege füren nach Rom. Ein casting nach array ist nicht nötig da $xml->{'winning-numbers'}->number eine XMLElementCollection ist, die wiederum iterierbar ist.

                  Was aber definitiv nicht empfohlen werden sollte ist Fehlerunterdrückung (siehe @ Operator) zumal ohnehin ein try-catch drum liegt was unter PHP7 alles nötige abfängt. @ ist auch bei kleineren PHP Versionen keine Option.

                  Und wenn sich das externe Format mal ändert gehört eigentlich auch eine Prüfung des Formates (also isset) dazu.
                  PHP-Manual ¡ mysql_* ist veraltet ¡ Debugging: Finde DEINE Fehler selbst ¡ Passwort-Hashing ¡ Prepared Statements

                  Kommentar


                  • #10
                    Zitat von tonkelz Beitrag anzeigen
                    Aber wo finde ich ein gutes Tutorial auf deutsch?
                    Am ehesten noch über die Beispiele im Handbuch. Aber die meisten Tutorials sind nun Mal in Englisch. Um diese Sprache kommst du beim Programmieren nicht herum.

                    Kommentar


                    • #11
                      versuch dein Glück bei Peter Kropff -> http://www.peterkropff.de - da hab ich aus JEDEM seiner Tutorials viel nützliches mitgenommen ...allerdings hat er bisher keins zu simplexml ... aber vielleicht nimmt er 'ne Anfrage an und baut eins ?
                      "Irren ist männlich", sprach der Igel und stieg von der Drahtbürste [IMG]http://www.php.de/core/images/smilies/icon_lol.gif[/IMG]

                      Kommentar


                      • #12
                        also irgendwie raff ich es nicht:

                        wie kann ich die "winning-quotas" auslesen?
                        wenn ich das Bsp hiervon nehme: http://selfphp.info/code_snippets/co...pet.php?id=140
                        Code:
                         <?php
                        
                        $file = "http://xml.info-lotto24.de/parsed_xmls/ejp_drawinfo.xml";
                        
                        try {
                            $xml = @simplexml_load_file($file);
                        }catch (Exception $e) {
                            echo "Error bad xml";
                        }
                         
                         
                        foreach ( $xml->winning-quotas as $user )  
                        {  
                          
                           echo 'Id: ' . $user['type'] . '<br>';  
                            
                           echo 'Name: ' . $user->prize . '<br>';  
                           echo 'Song: ' . $user->winnerNumber . '<br><br>';  
                          
                        }  
                        
                        ?>
                        oder dies: http://www.seo-welten.de/webcoding/xml-attribute.htm
                        nehme
                        Code:
                        <?php  $datei = "fluesse.xml";    
                         $Response = @simplexml_load_file($datei) or     die ("Fehler beim Laden der Datei: ".$datei."\n");  
                        
                        $laufebis = count($Response->Request->Fluesse->Fluss);   echo "\t<ul>\n";  for ($laufe = 0; $laufe < $laufebis; $laufe++) {      echo "\t<li>";      foreach ($Response->Request->Fluesse->Fluss[$laufe]->     attributes() as $alpha) {      echo $alpha." ";     }   echo "</li>\n"; } echo "\t</ul>\n";  ?>
                        dann so:
                        <?php $datei = "http://xml.info-lotto24.de/parsed_xmls/ejp_drawinfo.xml"; $Response = @simplexml_load_file($datei) or die ("Fehler beim Laden der Datei: ".$datei."\n"); $laufebis = count($Response->draw-info->winning-quotas); echo "\t<ul>\n"; for ($laufe = 0; $laufe < $laufebis; $laufe++) { echo "\t<li>"; foreach ($Response->draw-info->winning-quotas[$laufe]-> attributes() as $alpha) { echo $alpha." "; } echo "</li>\n"; } echo "\t</ul>\n"; ?>
                        [/code]
                        dann zeigt der mal gar nichts an.
                        http://www.krassevideos.net
                        http://www.mein-neues-iphone.de
                        http://www.webkatalog.es

                        Kommentar


                        • #13
                          wie kann ich die "winning-quotas" auslesen?
                          sh. Post #5, #7 und #8

                          Kommentar


                          • #14
                            Manual .. Kommentar zu "Hyphens" ...
                            PHP-Code:
                            $xml->{'winning-numbers'
                            wenn du aber Einfluss auf das XML hast, sorg dafür, dass keine Bindestriche und Underscores enthalten sind ...
                            "Irren ist männlich", sprach der Igel und stieg von der Drahtbürste [IMG]http://www.php.de/core/images/smilies/icon_lol.gif[/IMG]

                            Kommentar


                            • #15
                              Oder evtl. auf DOMDocument/DOMXPath ausweichen, das SimpleXML nicht sehr tolerant ist.
                              Bin mir grad nicht sicher, aber bei Deinem geposteten XML fehlt schon mal die XML-Definition. Ob das Probleme bei SimpleXML bereitet, kann ich grad nicht sagen.
                              Competence-Center -> Enjoy the Informatrix
                              PHProcks!Einsteiger freundliche TutorialsPreComposed Packages

                              Kommentar

                              Lädt...
                              X